diff options
Diffstat (limited to 'Swiften/Disco/FeatureOracle.h')
-rw-r--r-- | Swiften/Disco/FeatureOracle.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Swiften/Disco/FeatureOracle.h b/Swiften/Disco/FeatureOracle.h new file mode 100644 index 0000000..d579e5a --- /dev/null +++ b/Swiften/Disco/FeatureOracle.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + +#pragma once + +#include <Swiften/Base/API.h> +#include <Swiften/Base/Tristate.h> +#include <Swiften/Elements/DiscoInfo.h> + +namespace Swift { + +class EntityCapsProvider; +class JID; +class PresenceOracle; + +/** + * @brief The FeatureOracle class enables direct feature support lookup for client features supported by Swiften. + */ +class SWIFTEN_API FeatureOracle { + public: + FeatureOracle(EntityCapsProvider* capsProvider, PresenceOracle* presenceOracle); + + public: + Tristate isFileTransferSupported(const JID& jid); + Tristate isMessageReceiptsSupported(const JID& jid); + Tristate isMessageCorrectionSupported(const JID& jid); + + private: + /** + * @brief getDiscoResultForJID returns a shared reference to a DiscoInfo representing features supported by the jid. + * @param jid The JID to return the DiscoInfo::ref for. + * @return DiscoResult::ref + */ + DiscoInfo::ref getDiscoResultForJID(const JID& jid); + + Tristate isFeatureSupported(const JID& jid, const std::string& feature); + + private: + EntityCapsProvider* capsProvider_; + PresenceOracle* presenceOracle_; +}; + +} + |