~phablet-team/mfw-plugin-irc/trunk

« back to all changes in this revision

Viewing changes to include/irc/connector.h

  • Committer: Tiago Salem Herrmann
  • Date: 2016-12-16 18:58:01 UTC
  • Revision ID: tiago.herrmann@canonical.com-20161216185801-voyowdbxqafk7wrv
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef IRC_CLI_CONNECTOR_H_
 
2
#define IRC_CLI_CONNECTOR_H_
 
3
 
 
4
#include <irc/visibility.h>
 
5
 
 
6
#include <messaging/connector.h>
 
7
#include <messaging/messenger.h>
 
8
#include <messaging/enumerator.h>
 
9
#include <messaging/associative_dictionary.h>
 
10
 
 
11
#include <memory>
 
12
#include <mutex>
 
13
 
 
14
namespace messaging
 
15
{
 
16
// Handy fw declarations
 
17
class Variant;
 
18
class BoostVariant;
 
19
}
 
20
 
 
21
namespace irc
 
22
{
 
23
 
 
24
// Handy fw declarations
 
25
class Connection;
 
26
 
 
27
class IRC_PUBLIC Connector : public messaging::Connector
 
28
{
 
29
public:
 
30
 
 
31
    // create returns a new shared instance of Connector.
 
32
    static std::shared_ptr<Connector> create();
 
33
    virtual ~Connector();
 
34
 
 
35
    void run() override;
 
36
    void stop() override;
 
37
    bool network_monitor_enabled() override;
 
38
    const messaging::Enumerator<messaging::Parameter>& parameters() const override;
 
39
    std::shared_ptr<messaging::Connection> request_connection(
 
40
        const std::shared_ptr<messaging::Connection::Observer>& connection_observer,
 
41
        const std::shared_ptr<messaging::Messenger::Observer>& messenger_observer,
 
42
        const std::shared_ptr<messaging::PresenceManager::Observer>& presence_observer,
 
43
        const messaging::Dictionary<std::string, messaging::Variant>& dict =
 
44
            messaging::AssociativeDictionary<std::string, messaging::BoostVariant, messaging::Variant>()) override;
 
45
 
 
46
    void release_connection(const std::weak_ptr<Connection>& connection);
 
47
 
 
48
private:
 
49
    Connector();
 
50
 
 
51
    static Connector*& mutable_instance();
 
52
    static Connector* instance();
 
53
 
 
54
    messaging::StdVectorEnumerator<messaging::Parameter> params_enum_;
 
55
    std::set<std::weak_ptr<Connection>, std::owner_less<std::weak_ptr<Connection>>> connections_;
 
56
};
 
57
}
 
58
 
 
59
 
 
60
#endif  // IRC_CLI_CONNECTOR_H_