X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Flib%2Flibcitadel.h;h=4afcbde893b4ba8bfb889f523054d744fbc65e45;hb=97a1a0d3086fd9a7e52f05687eb039e6ef7a5c79;hp=f47c4a24106f9c6b998563a9355be1c5a5aeee95;hpb=98c6d07ff027ddc7c2bd74987b4f70642b159c7c;p=citadel.git diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index f47c4a241..4afcbde89 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -16,7 +16,7 @@ #include #include -#define LIBCITADEL_VERSION_NUMBER 800 +#define LIBCITADEL_VERSION_NUMBER 801 /* * Here's a bunch of stupid magic to make the MIME parser portable. @@ -89,6 +89,7 @@ typedef enum _room_views { VIEW_MAX } ROOM_VIEWS; +#define BLOG_EUIDBUF_SIZE 40 #ifndef IsEmptyStr #define IsEmptyStr(a) ((a)[0] == '\0') @@ -220,8 +221,6 @@ int StrBufTCP_read_buffered_line_fast(StrBuf *Line, int selectresolution, const char **Error); - - typedef enum _eReadState { eReadFail, eReadSuccess, @@ -237,11 +236,31 @@ typedef struct _file_buffer { int nBlobBytesWanted; } IOBuffer; + +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); + long StrBuf_read_one_chunk_callback (int fd, short event, IOBuffer *FB); int StrBuf_write_one_chunk_callback(int fd, short event, IOBuffer *FB); eReadState StrBufChunkSipLine(StrBuf *LineBuf, IOBuffer *FB); eReadState StrBufCheckBuffer(IOBuffer *FB); +long IOBufferStrLength(IOBuffer *FB); int StrBufSipLine(StrBuf *LineBuf, const StrBuf *Buf, const char **Ptr); int StrBufReplaceToken(StrBuf *Buf, long where, long HowLong, const char *Repl, long ReplLen); @@ -610,4 +629,8 @@ extern ConstStr RoomNetCfgStrs[maxRoomNetCfg]; /* Convenience function to "perform a function and cut a log record if result != 0" */ #define CtdlLogResult(x) if (x) syslog(LOG_CRIT, "%s:%d %s", __FILE__, __LINE__, strerror(errno)) +/* a nice consistent place to define how we turn a message id into a thread id hash */ +#define ThreadIdHash(Buf) abs(HashLittle(ChrPtr(Buf), StrLength(Buf))) + + #endif // LIBCITADEL_H