X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;ds=sidebyside;f=libcitadel%2Flib%2Flibcitadel.h;h=0ee29b20c3ca6ecbda2d7aa69834b69ed63f54b1;hb=aa1bc013ff54eb118855365945aae4218d099003;hp=ac102b1b25b41c1a1f65d9311bcba3b8c89e24d5;hpb=2ebab2f63ec2e3e865c7721dde9b3b67058b29a2;p=citadel.git diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index ac102b1b2..0ee29b20c 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -236,6 +236,23 @@ typedef struct _file_buffer { int nBlobBytesWanted; } IOBuffer; + +typedef struct __fd_iobuffer { + IOBuffer *IOB; + int OtherFD; + long TotalSendSize; + long TotalSentAlready; + long ChunkSize; + long ChunkSendRemain; + StrBuf *ChunkBuffer; /* just used if we don't have sendfile */ +} FDIOBuffer; + + +void FDIOBufferInit(FDIOBuffer *FDB, IOBuffer *IO, int FD, long TotalSendSize); +int FileSendChunked(FDIOBuffer *FDB, const char **Err); +int FileRecvChunked(FDIOBuffer *FDB, const char **Err); +eReadState WriteIOBAlreadyRead(FDIOBuffer *FDB, const char **Error); + long StrBuf_read_one_chunk_callback (int fd, short event, IOBuffer *FB); int StrBuf_write_one_chunk_callback(int fd, short event, IOBuffer *FB);