// Matt Wells, copyright Jul 2001 // . get a TitleRec from url/coll or docId #ifndef GB_MSG22_H #define GB_MSG22_H #include "Url.h" #include "Multicast.h" #include "collnum_t.h" // m_url[0]!=0 if this is a url-based request and NOT docid-based class Msg22Request { public: int64_t m_docId; int32_t m_niceness; int32_t m_maxCacheAge; collnum_t m_collnum; unsigned char m_justCheckTfndb :1; unsigned char m_getAvailDocIdOnly:1; unsigned char m_addToCache :1; unsigned char m_inUse :1; char m_url[MAX_URL_LEN+1]; Msg22Request(); int32_t getSize() const { return (m_url - (char *)&m_docId) + 1+strlen(m_url); } int32_t getMinSize() const { return (m_url - (char *)&m_docId) + 1; } }; class Msg22 { public: Msg22(); ~Msg22(); static bool registerHandler ( ) ; // . make sure you keep url/coll on your stack cuz we just point to it // . see the other getTitleRec() description below for more details bool getTitleRec ( class Msg22Request *r , const char *url, int64_t docId , const char *coll, char **titleRecPtrPtr , int32_t *titleRecSizePtr , bool justCheckTfndb , bool getAvailDocIdOnly , void *state , void (* callback) (void *state ), int32_t niceness , int32_t timeout ); int64_t getAvailDocId() const { return m_availDocId; } bool isOutstanding() const { return m_outstanding; } bool wasFound() const { return m_found; } //XmlDoc must be able to get a pointer to this member. Hrmpf int64_t m_availDocId; private: char **m_titleRecPtrPtr; int32_t *m_titleRecSizePtr; void (* m_callback ) (void *state); void *m_state ; bool m_found; // the error getting the title rec is stored here int32_t m_errno; bool m_outstanding ; // for sending the Msg22 Multicast m_mcast; class Msg22Request *m_r; static void gotReplyWrapper22(void *state1, void *state2); void gotReply(); }; #endif // GB_MSG22_H