Add support for sending / reading to files; so far we just implement the linux sendfi...
[citadel.git] / libcitadel / lib / libcitadel.h
index ac102b1b25b41c1a1f65d9311bcba3b8c89e24d5..0ee29b20c3ca6ecbda2d7aa69834b69ed63f54b1 100644 (file)
@@ -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);