X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fmessages.h;h=69f5e90aee77b065f0d977d76d2f24ebc4a44e34;hb=72015d547deb7e4632f70ad8dcae2d56ed8bfcca;hp=29ed7b3b5f6428dcea482191541a34341aa0ea36;hpb=172623f613d7a063ded70251cdb18b1e38030e10;p=citadel.git diff --git a/webcit/messages.h b/webcit/messages.h index 29ed7b3b5..69f5e90ae 100644 --- a/webcit/messages.h +++ b/webcit/messages.h @@ -1,7 +1,7 @@ extern HashList *MsgHeaderHandler; extern HashList *MimeRenderHandler; - +extern HashList *ReadLoopHandler; typedef struct wc_mime_attachment wc_mime_attachment; typedef void (*RenderMimeFunc)(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset); typedef struct _RenderMimeFuncStruct { @@ -93,4 +93,104 @@ int load_message(message_summary *Msg, StrBuf **Error); -int load_msg_ptrs(const char *servcmd, int with_headers, long *lowest_found, long *highest_found); + + +typedef struct _SharedMessageStatus{ + long load_seen; /** should read information be loaded */ + long sortit; /** should we sort it using the standard sort API? */ + long defaultsortorder; /** if we should sort it, which direction should be the default? */ + + long maxload; /** how many headers should we accept from the server? defaults to 10k */ + long maxmsgs; /** how many message bodies do you want to load at most?*/ + long reverse; /** should the load-range be reversed? */ + + long startmsg; /** which is the start message ????? */ + long nummsgs; /** How many messages are available to your view? */ + long num_displayed; /** counted up for LoadMsgFromServer */ /* TODO: unclear who should access this and why */ + + long lowest_found; /** smallest Message ID found; */ + long highest_found; /** highest Message ID found; */ + +}SharedMessageStatus; + +int load_msg_ptrs(const char *servcmd, SharedMessageStatus *Stat); + +typedef int (*GetParamsGetServerCall_func)(SharedMessageStatus *Stat, + void **ViewSpecific, + long oper, + char *cmd, + long len); + +typedef int (*PrintViewHeader_func)(SharedMessageStatus *Stat, void **ViewSpecific); + +typedef int (*LoadMsgFromServer_func)(SharedMessageStatus *Stat, + void **ViewSpecific, + message_summary* Msg, + int is_new, + int i); + +typedef int (*RenderView_or_Tail_func)(SharedMessageStatus *Stat, + void **ViewSpecific, + long oper); +typedef int (*View_Cleanup_func)(void **ViewSpecific); + +void RegisterReadLoopHandlerset( + /** + * RoomType: which View definition are you going to be called for + */ + int RoomType, + + /** + * GetParamsGetServerCall should do the following: + * * allocate your private context structure + * * evaluate your commandline arguments, put results to your private struct. + * * fill cmd with the command to load the message pointer list: + * * might depend on bstr/oper depending on your needs + * * might stay empty if no list should loaded and LoadMsgFromServer + * is skipped. + * * influence the behaviour by presetting values on SharedMessageStatus + */ + GetParamsGetServerCall_func GetParamsGetServerCall, + + /** + * PrintViewHeader is here to print informations infront of your messages. + * The message list is already loaded & sorted (if) so you can evaluate + * its result on the SharedMessageStatus struct. + */ + PrintViewHeader_func PrintViewHeader, + + /** + * LoadMsgFromServer is called for every message in the message list: + * * which is + * * after 'startmsg' + * * up to 'maxmsgs' after your 'startmsg' + * * it should load and parse messages from citserer. + * * depending on your needs you might want to print your message here... + * * if cmd was empty, its skipped alltogether. + */ + LoadMsgFromServer_func LoadMsgFromServer, + + /** + * RenderView_or_Tail is called last; + * * if you used PrintViewHeader to print messages, you might want to print + * trailing information here + * * if you just pre-loaded your messages, put your render code here. + */ + RenderView_or_Tail_func RenderView_or_Tail, + + /** + * ViewCleanup should just clear your private data so all your mem can go back to + * VALgrindHALLA. + * it also should release the content for delivery via end_burst() or wDumpContent(1); + */ + View_Cleanup_func ViewCleanup + ); +/* +GetParamsGetServerCall + +PrintViewHeader + +LoadMsgFromServer + +RenderView_or_Tail +*/