gloox 1.0.27
flexoff.h
1/*
2 Copyright (c) 2005-2023 by Jakob Schröter <js@camaya.net>
3 This file is part of the gloox library. http://camaya.net/gloox
4
5 This software is distributed under a license. The full license
6 agreement can be found in the file LICENSE in this distribution.
7 This software may not be copied, modified, sold or distributed
8 other than expressed in the named license agreement.
9
10 This software is distributed without any warranty.
11*/
12
13
14#ifndef FLEXOFF_H__
15#define FLEXOFF_H__
16
17#include "clientbase.h"
18#include "discohandler.h"
19#include "flexoffhandler.h"
20#include "iqhandler.h"
21#include "stanzaextension.h"
22
23namespace gloox
24{
25
34 class GLOOX_API FlexibleOffline : public DiscoHandler, public IqHandler
35 {
36 public:
41 FlexibleOffline( ClientBase* parent );
42
46 virtual ~FlexibleOffline();
47
53 void checkSupport();
54
59 void getMsgCount();
60
65 void fetchHeaders();
66
74 void fetchMessages( const StringList& msgs )
75 { messageOperation( FORequestMsgs, msgs ); }
76
83 void removeMessages( const StringList& msgs )
84 { messageOperation( FORemoveMsgs, msgs ); }
85
91 void registerFlexibleOfflineHandler( FlexibleOfflineHandler* foh );
92
96 void removeFlexibleOfflineHandler();
97
98 // reimplemented from DiscoHandler
99 virtual void handleDiscoInfo( const JID& from, const Disco::Info& info, int context );
100
101 // reimplemented from DiscoHandler
102 virtual void handleDiscoItems( const JID& from, const Disco::Items& items, int context );
103
104 // reimplemented from DiscoHandler
105 virtual void handleDiscoError( const JID& from, const Error* error, int context );
106
107 // reimplemented from IqHandler.
108 virtual bool handleIq( const IQ& iq ) { (void)iq; return false; }
109
110 // reimplemented from IqHandler.
111 virtual void handleIqID( const IQ& iq, int context );
112
113 private:
114#ifdef FLEXOFF_TEST
115 public:
116#endif
117 class Offline : public StanzaExtension
118 {
119 public:
124 Offline( const Tag* tag = 0 );
125
131 Offline( int context, const StringList& msgs );
132
136 virtual ~Offline();
137
138 // reimplemented from StanzaExtension
139 virtual const std::string& filterString() const;
140
141 // reimplemented from StanzaExtension
142 virtual StanzaExtension* newInstance( const Tag* tag ) const
143 {
144 return new Offline( tag );
145 }
146
147 // reimplemented from StanzaExtension
148 virtual Tag* tag() const;
149
150 // reimplemented from StanzaExtension
151 virtual StanzaExtension* clone() const
152 {
153 return new Offline( *this );
154 }
155
156 private:
157 int m_context;
158 StringList m_msgs;
159 };
160
161 void messageOperation( int context, const StringList& msgs );
162
163 enum FOContext
164 {
165 FOCheckSupport,
166 FORequestNum,
167 FORequestHeaders,
168 FORequestMsgs,
169 FORemoveMsgs
170 };
171
172 ClientBase* m_parent;
173 FlexibleOfflineHandler* m_flexibleOfflineHandler;
174 };
175
176}
177
178#endif // FLEXOFF_H__
This is the common base class for a Jabber/XMPP Client and a Jabber Component.
Definition clientbase.h:79
A virtual interface that enables objects to receive Service Discovery (XEP-0030) events.
An abstraction of a Disco Info element (from Service Discovery, XEP-0030) as a StanzaExtension.
Definition disco.h:66
An abstraction of a Disco query element (from Service Discovery, XEP-0030) in the disco::items namesp...
Definition disco.h:276
A stanza error abstraction implemented as a StanzaExtension.
Definition error.h:35
Implementation of this virtual interface allows for retrieval of offline messages following XEP-0030.
An implementation of XEP-0013 (Flexible Offline Message Retrieval).
Definition flexoff.h:35
virtual bool handleIq(const IQ &iq)
Definition flexoff.h:108
void removeMessages(const StringList &msgs)
Definition flexoff.h:83
void fetchMessages(const StringList &msgs)
Definition flexoff.h:74
An abstraction of an IQ stanza.
Definition iq.h:34
A virtual interface which can be reimplemented to receive IQ stanzas.
Definition iqhandler.h:32
An abstraction of a JID.
Definition jid.h:31
This class abstracts a stanza extension, which is usually an XML child element in a specific namespac...
This is an abstraction of an XML element.
Definition tag.h:47
The namespace for the gloox library.
Definition adhoc.cpp:28
std::list< std::string > StringList
Definition gloox.h:1251