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);
53 Connection(
const std::string &cnm,
const std::string& socket,
bool debug);
66 {
return m_typeService.get(); }
69 {
return m_responder.get(); }
75 virtual void send(
const Atlas::Objects::Root &obj);
77 void setDefaultRouter(
Router* router);
79 void clearDefaultRouter();
81 void registerRouterForTo(
Router* router,
const std::string toId);
82 void unregisterRouterForTo(
Router* router,
const std::string toId);
84 void registerRouterForFrom(
Router* router,
const std::string fromId);
85 void unregisterRouterForFrom(
Router* router,
const std::string fromId);
112 sigc::signal<void> GotServerInfo;
127 sigc::signal<void, const std::string&>
Failure;
143 virtual void handleTimeout(
const std::string& msg);
147 void objectArrived(
const Atlas::Objects::Root& obj);
149 const std::string _host;
152 const std::string _socket;
155 friend class TestInjector;
165 void dispatchOp(
const Atlas::Objects::Operation::RootOperation& op);
166 void handleServerInfo(
const Atlas::Objects::Operation::RootOperation& op);
168 void onDisconnectTimeout();
170 typedef std::deque<Atlas::Objects::Operation::RootOperation> OpDeque;
173 std::unique_ptr<TypeService> m_typeService;
176 typedef std::map<std::string, Router*> IdRouterMap;
177 IdRouterMap m_toRouters;
178 IdRouterMap m_fromRouters;
182 Atlas::Objects::ObjectsEncoder* m_debugRecvEncoder;
184 std::vector<Redispatch*> m_finishedRedispatches;
187 std::unique_ptr<ResponseTracker> m_responder;
191 long getNewSerialno();
Definition: Redispatch.h:15
Status
possible states for the connection
Definition: BaseConnection.h:48
virtual void onConnect()
derived-class notification when connection and negotiation is completed
Definition: Connection.cpp:351
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:83
void postForDispatch(const Atlas::Objects::Root &obj)
Inject a local operation into the dispatch queue.
Definition: Connection.cpp:364
virtual void handleFailure(const std::string &msg)
Process failures (to track when reconnection should be permitted)
Definition: Connection.cpp:327
Definition: LogStream.h:35
void getServerInfo(ServerInfo &) const
Retrive the current server information.
Definition: Connection.cpp:239
OpDeque m_opDeque
store of all the recived ops waiting to be dispatched
Definition: Connection.h:171
sigc::signal< bool > Disconnecting
Emitted when the disconnection process is initiated.
Definition: Connection.h:119
Definition: Account.cpp:33
void unlock()
Unlock the connection (permit status change).
Definition: Connection.cpp:217
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:147
virtual void setStatus(Status sc)
update the connection status (and emit the appropriate signal)
Definition: Connection.cpp:321
sigc::signal< void, Status > StatusChanged
indicates a status change on the connection
Definition: Connection.h:133
const short _port
port of the server
Definition: Connection.h:150
Connection(const std::string &cnm, const std::string &host, short port, bool debug)
Create an unconnected instance.
Definition: Connection.cpp:38
int connect()
If the underlying socket cannot be opened, connect will return an error number immediately.
Definition: Connection.cpp:74
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:127
void refreshServerInfo()
Update the information stored about the current server.
Definition: Connection.cpp:244
Underlying Atlas connection, providing a send interface, and receive (dispatch) system.
Definition: BaseConnection.h:32
void lock()
Lock then connection's state.
Definition: Connection.cpp:212
abstract interface for objects that can route Atlas data.
Definition: Router.h:10