+
+typedef struct __fd_iobuffer {
+ IOBuffer *IOB;
+ int OtherFD;
+ int SplicePipe[2];
+ 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);
+void FDIOBufferDelete(FDIOBuffer *FDB);
+int FileSendChunked(FDIOBuffer *FDB, const char **Err);
+int FileRecvChunked(FDIOBuffer *FDB, const char **Err);
+eReadState WriteIOBAlreadyRead(FDIOBuffer *FDB, const char **Error);
+