1 #ifndef ERIS_CONNECTION_H
2 #define ERIS_CONNECTION_H
4 #include <Eris/BaseConnection.h>
5 #include <Eris/ServerInfo.h>
7 #include <Atlas/Objects/Decoder.h>
8 #include <Atlas/Objects/ObjectsFwd.h>
9 #include <Atlas/Objects/RootOperation.h>
19 class basic_socket_stream;
30 class ResponseTracker;
39 public Atlas::Objects::ObjectsDecoder
47 Connection(
const std::string &cnm,
const std::string& host,
short port,
bool debug);
60 {
return m_typeService.get(); }
63 {
return m_responder.get(); }
69 virtual void send(
const Atlas::Objects::Root &obj);
71 void setDefaultRouter(
Router* router);
73 void clearDefaultRouter();
75 void registerRouterForTo(
Router* router,
const std::string toId);
76 void unregisterRouterForTo(
Router* router,
const std::string toId);
78 void registerRouterForFrom(
Router* router,
const std::string fromId);
79 void unregisterRouterForFrom(
Router* router,
const std::string fromId);
106 sigc::signal<void> GotServerInfo;
121 sigc::signal<void, const std::string&>
Failure;
137 virtual void handleTimeout(
const std::string& msg);
141 void objectArrived(
const Atlas::Objects::Root& obj);
148 friend class TestInjector;
158 void dispatchOp(
const Atlas::Objects::Operation::RootOperation& op);
159 void handleServerInfo(
const Atlas::Objects::Operation::RootOperation& op);
161 void onDisconnectTimeout();
163 typedef std::deque<Atlas::Objects::Operation::RootOperation> OpDeque;
166 std::auto_ptr<TypeService> m_typeService;
169 typedef std::map<std::string, Router*> IdRouterMap;
170 IdRouterMap m_toRouters;
171 IdRouterMap m_fromRouters;
175 Atlas::Objects::ObjectsEncoder* m_debugRecvEncoder;
177 std::vector<Redispatch*> m_finishedRedispatches;
180 std::auto_ptr<ResponseTracker> m_responder;
184 long getNewSerialno();