1 //******************************************************************
3 // Copyright 2014 Intel Corporation All Rights Reserved.
4 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 #ifndef LITEREMOTING_H_
7 #define LITEREMOTING_H_
9 // ============================================================================
11 // ============================================================================
12 #include <boost/shared_ptr.hpp>
13 #include <boost/thread.hpp>
18 using namespace Intel::STC;
20 #include "LiteSessionImpl.h"
21 #include "LiteUUIDLess.hpp"
22 #include "LiteTargetDevice.hpp"
23 #include "LiteTargetDeviceProxy.h"
25 // ============================================================================
27 // ============================================================================
30 // ==========================================================================
32 // ==========================================================================
34 // ============================================================
36 // ============================================================
38 static const std::string APPLICATION_UUID_STRING;
40 // ============================================================
42 // ============================================================
44 typedef boost::shared_ptr<LiteRemoting> Ptr;
46 // ============================================================
48 // ============================================================
50 static boost::shared_ptr<LiteRemoting> getInstance();
52 // ============================================================
53 // Private key for Singleton with shared_ptr
54 // LiteRemoting ctor must be public for make_ptr.
55 // But since we are a singleton, we don't want to allow clients
56 // to call the ctor. Since client can't access
57 // PrivateConstructKey, it can't call the public ctor.
58 // ============================================================
60 struct PrivateConstructKey {};
62 // ============================================================
63 // Constructor and Destructor
64 // ============================================================
66 LiteRemoting(PrivateConstructKey key);
67 virtual ~LiteRemoting();
69 // ============================================================
71 // ============================================================
75 // ============================================================
76 // Private copy constructor for Singleton
77 // ============================================================
79 LiteRemoting(const LiteRemoting&);
81 // ============================================================
83 // ============================================================
86 API::Service::SharedPtr pCCFService_;
87 API::Context::SharedPtr pCCFContext_;
90 std::map <UUID_t, boost::shared_ptr<LiteSessionImpl>, LiteUUIDLess> sessionMap_;
91 std::map <UUID_t, boost::shared_ptr<LiteTargetDeviceProxy>, LiteUUIDLess> targetDeviceProxyMap_;
92 boost::condition_variable cond_;
96 // ============================================================
98 // ============================================================
101 void queryMySessionId();
102 void queryMySessionInfo();
103 void addSessionToMap(UUID_t sessionId);
104 boost::shared_ptr<LiteSessionImpl> getSessionFromMap(UUID_t sessionId);
105 void addTargetDeviceToMap(UUID_t targetDeviceId);
106 boost::shared_ptr<LiteTargetDeviceProxy> getTargetDeviceFromMap(UUID_t targetDeviceId);
107 void handleNewConnection(UUID_t sessionId, int socket);
108 void handleNewTargetDevice(UUID_t targetDeviceId);
110 // ============================================================
112 // ============================================================
114 void sessionObserver(const API::SessionEvent& sessionEvent);
118 #endif /* LITEREMOTING_H_ */