\section{Класс WriteFiles}
\label{class_write_files}\index{WriteFiles@{WriteFiles}}


{\ttfamily \#include $<$WriteFiles.h$>$}



Базовые классы:{\bf TagHandler$<$ TagIQ $>$}.



Граф связей класса WriteFiles:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_write_files__coll__graph}
\end{center}
\end{figure}
\subsection*{Открытые члены}
\begin{DoxyCompactItemize}
\item 
{\bf WriteFiles} ()
\item 
void {\bf handleTag} ({\bf TagIQ} \&tag)
\item 
virtual {\bf $\sim$WriteFiles} ()
\item 
{\bf WriteFiles} ({\bf Protocol} \&{\bf protocol}, {\bf ServerConfig} $\ast${\bf sc}, {\bf BinaryProtocol} $\ast${\bf bp})
\end{DoxyCompactItemize}
\subsection*{Закрытые данные}
\begin{DoxyCompactItemize}
\item 
{\bf Protocol} $\ast$ {\bf protocol}
\item 
{\bf ServerConfig} $\ast$ {\bf sc}
\item 
{\bf BinaryProtocol} $\ast$ {\bf bp}
\item 
size\_\-t {\bf max\_\-readsize}
\end{DoxyCompactItemize}


\subsection{Подробное описание}


См. определение в файле WriteFiles.h строка 20



\subsection{Конструктор(ы)}
\index{WriteFiles@{WriteFiles}!WriteFiles@{WriteFiles}}
\index{WriteFiles@{WriteFiles}!WriteFiles@{WriteFiles}}
\subsubsection[{WriteFiles}]{\setlength{\rightskip}{0pt plus 5cm}WriteFiles::WriteFiles (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_write_files_aa6bcb3d77a1bfc3624265275bbcbc927}


См. определение в файле WriteFiles.cpp строка 220

\index{WriteFiles@{WriteFiles}!$\sim$WriteFiles@{$\sim$WriteFiles}}
\index{$\sim$WriteFiles@{$\sim$WriteFiles}!WriteFiles@{WriteFiles}}
\subsubsection[{$\sim$WriteFiles}]{\setlength{\rightskip}{0pt plus 5cm}WriteFiles::$\sim$WriteFiles (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  [virtual]}}\label{class_write_files_a539ac366195f2178e471ff5b5df1d7a0}


См. определение в файле WriteFiles.cpp строка 225



Граф вызовов:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=380pt]{class_write_files_a539ac366195f2178e471ff5b5df1d7a0_cgraph}
\end{center}
\end{figure}


\index{WriteFiles@{WriteFiles}!WriteFiles@{WriteFiles}}
\index{WriteFiles@{WriteFiles}!WriteFiles@{WriteFiles}}
\subsubsection[{WriteFiles}]{\setlength{\rightskip}{0pt plus 5cm}WriteFiles::WriteFiles (
\begin{DoxyParamCaption}
\item[{{\bf Protocol} \&}]{ protocol, }
\item[{{\bf ServerConfig} $\ast$}]{ sc, }
\item[{{\bf BinaryProtocol} $\ast$}]{ bp}
\end{DoxyParamCaption}
)}\label{class_write_files_a02b006842eab70b8835e39df8423b7ae}


См. определение в файле WriteFiles.cpp строка 11



Граф вызовов:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_write_files_a02b006842eab70b8835e39df8423b7ae_cgraph}
\end{center}
\end{figure}




\subsection{Методы}
\index{WriteFiles@{WriteFiles}!handleTag@{handleTag}}
\index{handleTag@{handleTag}!WriteFiles@{WriteFiles}}
\subsubsection[{handleTag}]{\setlength{\rightskip}{0pt plus 5cm}void WriteFiles::handleTag (
\begin{DoxyParamCaption}
\item[{{\bf TagIQ} \&}]{ tag}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  [virtual]}}\label{class_write_files_aaffd8b158203cf78878a8a70a1479e6a}


ifdef debug\_\-output cout $<$$<$ \char`\"{}OK, sending file data\char`\"{} $<$$<$ endl; endif TODO нечать передачу по бинарному протоколу Максимальный размер который можно с диска прочитать за раз size\_\-t max\_\-readSize = 4096000; Размер яитаемый за раз, если он больше максимального, присвоить максимальный size\_\-t rzize = szforread; if (rzize $>$ max\_\-readsize) \{ rzize = max\_\-readsize; \}

Выделяем буфер для чтения за раз void$\ast$ buf = malloc(rzize); Перемещаем на нужное место указатель в файле lseek(fDesc, offset, SEEK\_\-SET);

Сколько надо всего прочитать size\_\-t rzizeall = szforread; while (rzizeall $>$ 0) \{ Текущая позиция в буфере char$\ast$ buf1 = (char$\ast$) buf; ssize\_\-t sr = 0; //Результат чтения за под раз ssize\_\-t sr1 = rzize; //сколько нужно прочесть за раз do \{//Читаем по подразу пока не прочтем за раз ifdef debug\_\-output cout $<$$<$ \char`\"{}цикл1\char`\"{} $<$$<$ endl; endif sr = read(fDesc, buf1, sr1); if (sr != -\/1) \{ sr1 -\/= sr; buf1 += sr; \} \} while ((sr1 $>$ 0) \&\& (sr $>$ 0)); отправлеяем пакет который прочли за раз Сколько нужно прочесть -\/ сколько прочесть не вышло bp-\/$>$setSendBufferData(buf, rzize -\/ sr1, pktID); rzizeall -\/= (rzize -\/ sr1); ifdef debug\_\-output cout $<$$<$ \char`\"{}sr1\char`\"{} $<$$<$ sr1 $<$$<$ endl; endif if (sr == -\/1) \{ cout $<$$<$ \char`\"{}ОШИБКА ЧТЕНИЯ!\char`\"{} $<$$<$ errno $<$$<$ endl; Если была ошибка чтения то нужно прервать чтение break; \} if (sr == 0) \{ cout $<$$<$ \char`\"{}Конец файла!\char`\"{} $<$$<$ endl; break; \} ifdef debug\_\-output cout $<$$<$ \char`\"{}цикл2\char`\"{} $<$$<$ endl; endif \} free(buf); \} else \{ cout $<$$<$ \char`\"{}!!Нет ответа от клиента о подетверждении передачи содержимого!!!!\char`\"{} $<$$<$ endl; \} \} close(fDesc); ifdef debug\_\-output cout $<$$<$ \char`\"{}STEPFINAL read\char`\"{} $<$$<$ endl; endif



Замещает {\bf TagHandler$<$ TagIQ $>$} \doxyref{}{стр.}{class_tag_handler_aae7e82cdc8a8faa8d48a8b4570c3c963}.



См. определение в файле WriteFiles.cpp строка 20



Граф вызовов:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=386pt]{class_write_files_aaffd8b158203cf78878a8a70a1479e6a_cgraph}
\end{center}
\end{figure}




\subsection{Данные класса}
\index{WriteFiles@{WriteFiles}!bp@{bp}}
\index{bp@{bp}!WriteFiles@{WriteFiles}}
\subsubsection[{bp}]{\setlength{\rightskip}{0pt plus 5cm}{\bf BinaryProtocol}$\ast$ {\bf WriteFiles::bp}\hspace{0.3cm}{\ttfamily  [private]}}\label{class_write_files_a387f250208634583b0ba5196019373f3}


См. определение в файле WriteFiles.h строка 24

\index{WriteFiles@{WriteFiles}!max\_\-readsize@{max\_\-readsize}}
\index{max\_\-readsize@{max\_\-readsize}!WriteFiles@{WriteFiles}}
\subsubsection[{max\_\-readsize}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t {\bf WriteFiles::max\_\-readsize}\hspace{0.3cm}{\ttfamily  [private]}}\label{class_write_files_ada0412ae32cee7507fb40e4b67e78d5a}


См. определение в файле WriteFiles.h строка 25

\index{WriteFiles@{WriteFiles}!protocol@{protocol}}
\index{protocol@{protocol}!WriteFiles@{WriteFiles}}
\subsubsection[{protocol}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Protocol}$\ast$ {\bf WriteFiles::protocol}\hspace{0.3cm}{\ttfamily  [private]}}\label{class_write_files_a5364be77f7c10798c7693a36c679a8ac}


См. определение в файле WriteFiles.h строка 22

\index{WriteFiles@{WriteFiles}!sc@{sc}}
\index{sc@{sc}!WriteFiles@{WriteFiles}}
\subsubsection[{sc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf ServerConfig}$\ast$ {\bf WriteFiles::sc}\hspace{0.3cm}{\ttfamily  [private]}}\label{class_write_files_ae15d245713db8e41c7d620da68a5c008}


См. определение в файле WriteFiles.h строка 23



Объявления и описания членов классов находятся в файлах:\begin{DoxyCompactItemize}
\item 
ServerFSp/LibFileOperations/{\bf WriteFiles.h}\item 
ServerFSp/LibFileOperations/{\bf WriteFiles.cpp}\end{DoxyCompactItemize}
