1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
// **********************************************************************
//
// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
#ifndef GLACIER2_SESSION_HELPER_H
#define GLACIER2_SESSION_HELPER_H
#include <IceUtil/Shared.h>
#include <IceUtil/Handle.h>
#include <IceUtil/Thread.h>
#include <IceUtil/Mutex.h>
#include <Ice/Initialize.h>
#include <Ice/Properties.h>
#include <Ice/Communicator.h>
#include <Ice/ObjectAdapter.h>
#include <Ice/Ice.h>
#include <Glacier2/Session.h>
#include <Glacier2/Router.h>
#include <map>
#include <string>
namespace Glacier2
{
const int GLACIER2_SSL_PORT = 4064;
const int GLACIER2_TCP_PORT = 4063;
class GLACIER2_API SessionHelper : public virtual ICE_SHARED
{
public:
virtual void destroy() = 0;
virtual Ice::CommunicatorPtr communicator() const = 0;
virtual std::string categoryForClient() const = 0;
virtual Ice::ObjectPrxPtr addWithUUID(const Ice::ObjectPtr&) = 0;
virtual Glacier2::SessionPrxPtr session() const = 0;
virtual bool isConnected() const = 0;
virtual Ice::ObjectAdapterPtr objectAdapter() = 0;
bool operator==(const Glacier2::SessionHelper&) const;
bool operator!=(const Glacier2::SessionHelper&) const;
};
ICE_DEFINE_PTR(SessionHelperPtr, SessionHelper);
class GLACIER2_API SessionCallback : public virtual ICE_SHARED
{
public:
virtual void createdCommunicator(const SessionHelperPtr& session) = 0;
virtual void connected(const SessionHelperPtr&) = 0;
virtual void disconnected(const SessionHelperPtr&) = 0;
virtual void connectFailed(const SessionHelperPtr&, const Ice::Exception&) = 0;
};
ICE_DEFINE_PTR(SessionCallbackPtr, SessionCallback);
class SessionThreadCallback;
class GLACIER2_API SessionFactoryHelper : public Ice::EnableSharedFromThis<SessionFactoryHelper>
{
friend class SessionThreadCallback; // To access thread functions
public:
SessionFactoryHelper(const SessionCallbackPtr& callback);
SessionFactoryHelper(const Ice::InitializationData&, const SessionCallbackPtr&);
SessionFactoryHelper(const Ice::PropertiesPtr&, const SessionCallbackPtr&);
~SessionFactoryHelper();
void destroy();
void setRouterIdentity(const Ice::Identity&);
Ice::Identity getRouterIdentity() const;
void setRouterHost(const std::string&);
std::string getRouterHost() const;
ICE_DEPRECATED_API("is deprecated, use SessionFactoryHelper::setProtocol instead")
void setSecure(bool);
ICE_DEPRECATED_API("is deprecated, use SessionFactoryHelper::getProtocol instead")
bool getSecure() const;
void setProtocol(const std::string&);
std::string getProtocol() const;
void setTimeout(int);
int getTimeout() const;
void setPort(int port);
int getPort() const;
Ice::InitializationData getInitializationData() const;
void setConnectContext(std::map<std::string, std::string> context);
void setUseCallbacks(bool);
bool getUseCallbacks() const;
SessionHelperPtr connect();
SessionHelperPtr connect(const std::string&, const std::string&);
private:
void addThread(const SessionHelper*, const IceUtil::ThreadPtr&);
Ice::InitializationData createInitData();
std::string getRouterFinderStr();
int getPortInternal() const;
std::string createProxyStr(const Ice::Identity& ident);
void setDefaultProperties();
IceUtil::Mutex _mutex;
std::string _routerHost;
Ice::Identity _identity;
std::string _protocol;
int _port;
int _timeout;
Ice::InitializationData _initData;
SessionCallbackPtr _callback;
std::map< std::string, std::string> _context;
bool _useCallbacks;
std::map<const SessionHelper*, IceUtil::ThreadPtr> _threads;
};
ICE_DEFINE_PTR(SessionFactoryHelperPtr, SessionFactoryHelper);
}
#endif
|