Logging: log the number of messages in room with the message-syslog domain
[citadel.git] / citadel / msgbase.h
index 0917f1978a526115023728a0c601de053b36d741..f74c64b734590c51bea2d4c9ce2733c6b20ada2b 100644 (file)
@@ -1,9 +1,8 @@
-/* $Id$ */
 
 #ifndef MSGBASE_H
 #define MSGBASE_H
 
-
+#include "event_client.h"
 enum {
        MSGS_ALL,
        MSGS_OLD,
@@ -29,7 +28,8 @@ enum {
        om_ok,
        om_not_logged_in,
        om_no_such_msg,
-       om_mime_error
+       om_mime_error,
+       om_access_denied
 };
 
 /*
@@ -49,6 +49,7 @@ struct ma_info {
        char chosen_part[128];  /* Which part of a m/a did we choose? */
        int chosen_pref;        /* Chosen part preference level (lower is better) */
        int use_fo_hooks;       /* Use fixed output hooks */
+       int dont_decode;        /* should we call the decoder or not? */
 };
 
 
@@ -71,9 +72,11 @@ struct recptypes {
        char *recp_internet;
        char *recp_ignet;
        char *recp_room;
+       char *recp_orgroom;
        char *display_recp;
        char *bounce_to;
        char *envelope_from;
+       char *sending_room;
 };
 
 #define RECPTYPES_MAGIC 0xfeeb
@@ -107,7 +110,7 @@ void cmd_opna (char *cmdbuf);
 void cmd_dlat (char *cmdbuf);
 long send_message (struct CtdlMessage *);
 void loadtroom (void);
-long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, char *, int);
+long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, const char *, int);
 void quickie_message (const char *, const char *, char *, char *, const char *, int, const char *);
 void cmd_ent0 (char *entargs);
 void cmd_dele (char *delstr);
@@ -139,6 +142,7 @@ void CtdlWriteObject(char *req_room,                        /* Room to stuff it in */
 );
 struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body);
 void CtdlFreeMessage(struct CtdlMessage *msg);
+void CtdlFreeMessageContents(struct CtdlMessage *msg);
 void serialize_message(struct ser_ret *, struct CtdlMessage *);
 void dump_message(struct CtdlMessage *msg, long Siz);
 int is_valid_message(struct CtdlMessage *);
@@ -187,10 +191,13 @@ enum {
        CHECK_EXISTANCE,
        POST_LMTP
 };
+
 int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, 
-                                         size_t n, 
-                                         const char* RemoteIdentifier,
-                                         int PostPublic);
+       size_t n, 
+       const char* RemoteIdentifier,
+       int PostPublic,
+       int is_reply
+);
 
 
 /* values for which_set */
@@ -234,5 +241,39 @@ int CtdlIsMe(char *addr, int addr_buf_len);
 void aide_message(char *text, char *subject) __attribute__ ((deprecated));
 
 
+/* 
+ * loading messages async via an FD: 
+ * add IO->ReadMsg = NewAsyncMsg(...)
+ * and then call CtdlReadMessageBodyAsync() from your linreader handler.
+ */
+
+ReadAsyncMsg *NewAsyncMsg(const char *terminator,      /* token signalling EOT */
+                         long tlen,
+                         size_t expectlen,             /* if we expect a message, how long should it be? */
+                         size_t maxlen,                /* maximum message length */
+                         char *exist,                  /* if non-null, append to it;
+                                                          exist is ALWAYS freed  */
+                         long eLen,                    /* length of exist */
+                         int crlf                      /* CRLF newlines instead of LF */
+       );
+
+eReadState CtdlReadMessageBodyAsync(AsyncIO *IO);
+void DeleteAsyncMsg(ReadAsyncMsg **Msg);
+
+extern int MessageDebugEnabled;
+
+#define MSGDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (MessageDebugEnabled != 0))
+#define CCCID CCC->cs_pid
+#define MSG_syslog(LEVEL, FORMAT, ...)                 \
+       MSGDBGLOG(LEVEL) syslog(LEVEL,                  \
+                               "CC[%d]" FORMAT,        \
+                               CCCID, __VA_ARGS__)
+
+#define MSGM_syslog(LEVEL, FORMAT)                     \
+       MSGDBGLOG(LEVEL) syslog(LEVEL,                  \
+                               "CC[%d]" FORMAT,        \
+                               CCCID)
+
+
 
 #endif /* MSGBASE_H */