Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

Eris::BaseConnection Class Reference

Underlying Atlas connection, providing a send interface, and receive (dispatch) system. More...

#include <BaseConnection.h>

Inheritance diagram for Eris::BaseConnection:

Eris::Connection Eris::MetaQuery List of all members.

Public Types

enum  Status {
  INVALID_STATUS = 0, NEGOTIATE, CONNECTING, CONNECTED,
  DISCONNECTED, DISCONNECTING, QUERY_GET
}
 possible states for the connection More...


Public Member Functions

virtual ~BaseConnection ()
 destructor, will perform a hard disconnect if necessary

virtual void connect (const std::string &host, short port)
 open a connection to the specified host/port; invokes the failure handler if the connection could not be opened.

Status getStatus () const
 get the current status of the connection

bool isConnected () const
 Ascertain whether or not the connection is usable for transport.

int getFileDescriptor ()
 get the underlyinmg file descriptor (socket).


Public Attributes

SigC::Signal0< void > Connected
 sent on successful negotiation of a game server connection

SigC::Signal0< void > Disconnected
 final disconnect (or hard disocnnect) notifcation


Protected Member Functions

 BaseConnection (const std::string &cnm, const std::string &id, Atlas::Bridge *br)
 Create a new connection, with the client-name string specified.

void recv ()
 perform a blocking read from the underlying socket

virtual void setStatus (Status sc)
 update the connection status and generate signals

virtual void onConnect ()
 derived-class notification when connection and negotiation is completed

virtual void handleFailure (const std::string &msg)=0
 derived-class notification when a failure occurs

virtual void bindTimeout (Timeout &t, Status sc)=0
 hook for derived classes to install a signal handler onto the timeout

void hardDisconnect (bool emit)
 performs and instant disconnection from the server specified whether the change of state should be signalled

void nonblockingConnect ()
 complete the connection state and start negotiation

void pollNegotiation ()
 track negotation of the Atlas codecs / stream


Protected Attributes

Atlas::Objects::Encoder * _encode
 the objects encoder, bound to _codec

Atlas::Message::Encoder * _msgEncode
 the message encoder, again bound to _codec

Atlas::Net::StreamConnect * _sc
 negotiation object (NULL after connection!)

Atlas::Codec< std::iostream > * _codec
 the underlying codec object

Status _status
 current status of the connection

const std::string _id
 a unique identifier for this connection

tcp_socket_stream * _stream
 the underlying iostream channel

std::string _clientName
 the client identified used during connection

Atlas::Bridge * _bridge
 the connection bridge (i.e something implementing objectArrived()) : this can be the derived class itself, or any other object

Timeout_timeout
 network level timeouts

std::string _host
 the host name we're connected to

short _port
 the port we're connected to


Detailed Description

Underlying Atlas connection, providing a send interface, and receive (dispatch) system.


Member Enumeration Documentation

enum Eris::BaseConnection::Status
 

possible states for the connection

Enumeration values:
INVALID_STATUS  indicates an illegal state
NEGOTIATE  Atlas negotiation in progress.
CONNECTING  stream / socket connection in progress
CONNECTED  connection fully established
DISCONNECTED  finished disconnection
DISCONNECTING  clean disconnection in progress
QUERY_GET  meta-query performing GET operation


Constructor & Destructor Documentation

Eris::BaseConnection::BaseConnection const std::string &  cnm,
const std::string &  id,
Atlas::Bridge *  br
[protected]
 

Create a new connection, with the client-name string specified.

The client-name is sent during Atlas negotiation of the connection. Id is a unique string to identify timeouts created by the connection (and potentially errors in the future)


Member Function Documentation

int Eris::BaseConnection::getFileDescriptor  ) 
 

get the underlyinmg file descriptor (socket).

This is so GUI / widget libraries which steal the main-loop, but can monitor file-decriptors work. The obvious examples being Gtk+/-- and Qt


The documentation for this class was generated from the following files:
Generated on Thu Jul 29 08:12:34 2004 for Eris by doxygen 1.3.7