Открытые члены | Закрытые данные

Класс WriteFiles

#include <WriteFiles.h>

Базовые классы:TagHandler< TagIQ >.

Граф связей класса WriteFiles:
Collaboration graph
[см. легенду]

Полный список членов класса

Открытые члены

 WriteFiles ()
void handleTag (TagIQ &tag)
virtual ~WriteFiles ()
 WriteFiles (Protocol &protocol, ServerConfig *sc, BinaryProtocol *bp)

Закрытые данные

Protocolprotocol
ServerConfigsc
BinaryProtocolbp
size_t max_readsize

Подробное описание

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


Конструктор(ы)

WriteFiles::WriteFiles (  ) 

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

WriteFiles::~WriteFiles (  )  [virtual]

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

Граф вызовов:

WriteFiles::WriteFiles ( Protocol protocol,
ServerConfig sc,
BinaryProtocol bp 
)

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

Граф вызовов:


Методы

void WriteFiles::handleTag ( TagIQ tag  )  [virtual]

ifdef debug_output cout << "OK, sending file data" << endl; endif TODO нечать передачу по бинарному протоколу Максимальный размер который можно с диска прочитать за раз size_t max_readSize = 4096000; Размер яитаемый за раз, если он больше максимального, присвоить максимальный size_t rzize = szforread; if (rzize > max_readsize) { rzize = max_readsize; }

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

Сколько надо всего прочитать size_t rzizeall = szforread; while (rzizeall > 0) { Текущая позиция в буфере char* buf1 = (char*) buf; ssize_t sr = 0; //Результат чтения за под раз ssize_t sr1 = rzize; //сколько нужно прочесть за раз do {//Читаем по подразу пока не прочтем за раз ifdef debug_output cout << "цикл1" << 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 << "sr1" << sr1 << endl; endif if (sr == -1) { cout << "ОШИБКА ЧТЕНИЯ!" << errno << endl; Если была ошибка чтения то нужно прервать чтение break; } if (sr == 0) { cout << "Конец файла!" << endl; break; } ifdef debug_output cout << "цикл2" << endl; endif } free(buf); } else { cout << "!!Нет ответа от клиента о подетверждении передачи содержимого!!!!" << endl; } } close(fDesc); ifdef debug_output cout << "STEPFINAL read" << endl; endif

Замещает TagHandler< TagIQ >.

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

Граф вызовов:


Данные класса

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

size_t WriteFiles::max_readsize [private]

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

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

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


Объявления и описания членов классов находятся в файлах: