1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #ifndef GLACIER2_ROUTER_I_H
6 #define GLACIER2_ROUTER_I_H
7 
8 #include <Ice/Ice.h>
9 #include <Glacier2/Router.h>
10 #include <Glacier2/ClientBlobject.h>
11 #include <Glacier2/ServerBlobject.h>
12 
13 namespace Glacier2
14 {
15 
16 class RoutingTable;
17 typedef IceUtil::Handle<RoutingTable> RoutingTablePtr;
18 
19 class RouterI;
RouterI(const InstancePtr & instance,const ConnectionPtr & connection,const string & userId,const SessionPrx & session,const Identity & controlId,const FilterManagerPtr & filters,const Ice::Context & context)20 typedef IceUtil::Handle<RouterI> RouterIPtr;
21 
22 class FilterManager;
23 typedef IceUtil::Handle<FilterManager> FilterManagerPtr;
24 
25 class RouterI : public Router
26 {
27 public:
28 
29     RouterI(const InstancePtr&, const Ice::ConnectionPtr&, const std::string&, const SessionPrx&, const Ice::Identity&,
30             const FilterManagerPtr&, const Ice::Context&);
31 
32     virtual ~RouterI();
33 
34     void destroy(const Callback_Session_destroyPtr&);
35 
36     virtual Ice::ObjectPrx getClientProxy(IceUtil::Optional<bool>&, const Ice::Current&) const;
37     virtual Ice::ObjectPrx getServerProxy(const Ice::Current&) const;
38     virtual Ice::ObjectProxySeq addProxies(const Ice::ObjectProxySeq&, const Ice::Current&);
39     virtual std::string getCategoryForClient(const Ice::Current&) const;
40     virtual void createSession_async(const AMD_Router_createSessionPtr&, const std::string&, const std::string&,
41                                      const Ice::Current&);
42     virtual void createSessionFromSecureConnection_async(const AMD_Router_createSessionFromSecureConnectionPtr&,
43                                                          const Ice::Current&);
44     virtual void refreshSession_async(const AMD_Router_refreshSessionPtr&, const ::Ice::Current&);
45     virtual void destroySession(const ::Ice::Current&);
46     virtual Ice::Long getSessionTimeout(const ::Ice::Current&) const;
47     virtual Ice::Int getACMTimeout(const ::Ice::Current&) const;
48 
49     ClientBlobjectPtr getClientBlobject() const;
50     ServerBlobjectPtr getServerBlobject() const;
51 
52     SessionPrx getSession() const;
53 
54     IceUtil::Time getTimestamp() const;
55     void updateTimestamp() const;
56 
57     void updateObserver(const Glacier2::Instrumentation::RouterObserverPtr&);
58 
59     std::string toString() const;
60 
61 private:
62 
63     const InstancePtr _instance;
64     const RoutingTablePtr _routingTable;
65     const Ice::ObjectPrx _clientProxy;
66     const Ice::ObjectPrx _serverProxy;
67     const ClientBlobjectPtr _clientBlobject;
68     const ServerBlobjectPtr _serverBlobject;
69     const bool _clientBlobjectBuffered;
70     const bool _serverBlobjectBuffered;
71     const Ice::ConnectionPtr _connection;
72     const std::string _userId;
73     const SessionPrx _session;
74     const Ice::Identity _controlId;
75     const Ice::Context _context;
76     const IceUtil::Mutex _timestampMutex;
77     mutable IceUtil::Time _timestamp;
78 
79     Glacier2::Instrumentation::SessionObserverPtr _observer;
~RouterI()80 };
81 
82 }
83 
84 #endif
updateObserver(const Glacier2::Instrumentation::RouterObserverPtr & observer)85