Readloop remove special cases
[citadel.git] / libcitadel / lib / libcitadel.h
index 0ee29b20c3ca6ecbda2d7aa69834b69ed63f54b1..d520eae4c96d8733104465bc58402629ada5b796 100644 (file)
@@ -1,5 +1,15 @@
 /*
  * Header file for libcitadel
+ *
+ * Copyright (c) 1987-2012 by the citadel.org team
+ *
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  */
 
 
 #include <stdlib.h>
 #include <stdarg.h>
 #include <arpa/inet.h>
+#include <sys/types.h>
+#include <netinet/in.h>
 
-#define LIBCITADEL_VERSION_NUMBER      800
+#define LIBCITADEL_VERSION_NUMBER      810
 
 /*
  * Here's a bunch of stupid magic to make the MIME parser portable.
@@ -86,7 +98,9 @@ typedef enum _room_views {
        VIEW_JOURNAL            = 8,    /* Journal view */
        VIEW_DRAFTS             = 9,    /* Drafts view */
        VIEW_BLOG               = 10,   /* Blog view */
-       VIEW_MAX
+       VIEW_QUEUE              = 11,   /* SMTP/... QUEUE rooms */
+       VIEW_MAX,
+       VIEW_JSON_LIST,
 } ROOM_VIEWS;
 
 #define BLOG_EUIDBUF_SIZE      40
@@ -240,6 +254,7 @@ typedef struct _file_buffer {
 typedef struct __fd_iobuffer {
        IOBuffer *IOB;
        int OtherFD;
+       int SplicePipe[2];
        long TotalSendSize;
        long TotalSentAlready;
        long ChunkSize;
@@ -249,6 +264,7 @@ typedef struct __fd_iobuffer {
 
 
 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);
@@ -354,6 +370,7 @@ const char *GetIconFilename(char *MimeType, size_t len);
 /* URL parsing & connection data */
 typedef struct ParsedURL ParsedURL;
 struct ParsedURL {
+       int Priority;
        StrBuf *URL;
        StrBuf *UrlWithoutCred;
        StrBuf *CurlCreds;
@@ -627,4 +644,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