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);
143 const std::string _host;
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();
Definition: Redispatch.h:15
Status
possible states for the connection
Definition: BaseConnection.h:41
virtual void onConnect()
derived-class notification when connection and negotiation is completed
Definition: Connection.cpp:333
Information about a specific game server, retrieved via the Meta-server and anonymous GETs...
Definition: ServerInfo.h:21
int disconnect()
Initiate disconnection from the server.
Definition: Connection.cpp:66
void postForDispatch(const Atlas::Objects::Root &obj)
Inject a local operation into the dispatch queue.
Definition: Connection.cpp:346
virtual void handleFailure(const std::string &msg)
Process failures (to track when reconnection should be permitted)
Definition: Connection.cpp:309
Definition: LogStream.h:35
void getServerInfo(ServerInfo &) const
Retrive the current server information.
Definition: Connection.cpp:221
OpDeque m_opDeque
store of all the recived ops waiting to be dispatched
Definition: Connection.h:164
sigc::signal< bool > Disconnecting
Emitted when the disconnection process is initiated.
Definition: Connection.h:113
void unlock()
Unlock the connection (permit status change).
Definition: Connection.cpp:200
Underlying Atlas connection, providing a send interface, and receive (dispatch) system.
Definition: Connection.h:37
virtual void send(const Atlas::Objects::Root &obj)
Transmit an Atlas::Objects instance to the server.
Definition: Connection.cpp:130
virtual void setStatus(Status sc)
update the connection status (and emit the appropriate signal)
Definition: Connection.cpp:303
sigc::signal< void, Status > StatusChanged
indicates a status change on the connection
Definition: Connection.h:127
const short _port
port of the server
Definition: Connection.h:144
Connection(const std::string &cnm, const std::string &host, short port, bool debug)
Create an unconnected instance.
Definition: Connection.cpp:40
int connect()
If the underlying socket cannot be opened, connect will return an error number immediately.
Definition: Connection.cpp:61
A service class querying and caching types.
Definition: TypeService.h:24
Definition: Response.h:59
sigc::signal< void, const std::string & > Failure
Emitted when a non-fatal error occurs.
Definition: Connection.h:121
void refreshServerInfo()
Update the information stored about the current server.
Definition: Connection.cpp:226
Underlying Atlas connection, providing a send interface, and receive (dispatch) system.
Definition: BaseConnection.h:30
void lock()
Lock then connection's state.
Definition: Connection.cpp:195
abstract interface for objects that can route Atlas data.
Definition: Router.h:10