Sirikata
|
#include <SSTImpl.hpp>
Public Types | |
typedef std::tr1::shared_ptr < Connection > | Ptr |
typedef Ptr | ConnectionPtr |
Public Member Functions | |
virtual | ~Connection () |
virtual bool | datagram (void *data, int length, uint32 local_port, uint32 remote_port, DatagramSendDoneCallback cb) |
virtual bool | registerReadDatagramCallback (uint32 port, ReadDatagramCallback cb) |
virtual bool | registerReadOrderedDatagramCallback (ReadDatagramCallback cb) |
virtual void | close (bool force) |
virtual void | iClose (bool force) |
virtual EndPoint< EndPointType > | localEndPoint () |
virtual EndPoint< EndPointType > | remoteEndPoint () |
Private Types | |
enum | ConnectionStates { CONNECTION_DISCONNECTED = 1, CONNECTION_PENDING_CONNECT = 2, CONNECTION_PENDING_RECEIVE_CONNECT = 3, CONNECTION_CONNECTED = 4, CONNECTION_PENDING_DISCONNECT = 5 } |
typedef BaseDatagramLayer < EndPointType > | BaseDatagramLayerType |
typedef std::tr1::shared_ptr < BaseDatagramLayerType > | BaseDatagramLayerPtr |
typedef CallbackTypes < EndPointType > | CBTypes |
typedef CBTypes::ConnectionReturnCallbackFunction | ConnectionReturnCallbackFunction |
typedef CBTypes::StreamReturnCallbackFunction | StreamReturnCallbackFunction |
typedef CBTypes::DatagramSendDoneCallback | DatagramSendDoneCallback |
typedef CBTypes::ReadDatagramCallback | ReadDatagramCallback |
typedef std::tr1::unordered_map < EndPoint< EndPointType > , std::tr1::shared_ptr < Connection >, typename EndPoint< EndPointType > ::Hasher > | ConnectionMap |
typedef std::tr1::unordered_map < EndPoint< EndPointType > , ConnectionReturnCallbackFunction, typename EndPoint < EndPointType >::Hasher > | ConnectionReturnCallbackMap |
typedef std::tr1::unordered_map < EndPoint< EndPointType > , StreamReturnCallbackFunction, typename EndPoint < EndPointType >::Hasher > | StreamReturnCallbackMap |
typedef std::map< LSID, std::tr1::shared_ptr< Stream < EndPointType > > > | LSIDStreamMap |
typedef std::vector< std::string > | PartialPayloadList |
typedef std::map< LSID, PartialPayloadList > | PartialPayloadMap |
Private Member Functions | |
Connection (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > localEndPoint, EndPoint< EndPointType > remoteEndPoint) | |
void | checkIfAlive (std::tr1::shared_ptr< Connection< EndPointType > > conn) |
void | sendSSTChannelPacket (Sirikata::Protocol::SST::SSTChannelHeader &sstMsg) |
const Context * | getContext () |
void | serviceConnectionNoReturn (std::tr1::shared_ptr< Connection< EndPointType > > conn) |
bool | serviceConnection (std::tr1::shared_ptr< Connection< EndPointType > > conn) |
void | listenStream (uint32 port, StreamReturnCallbackFunction scb) |
void | unlistenStream (uint32 port) |
virtual int | stream (StreamReturnCallbackFunction cb, void *initial_data, int length, uint32 local_port, uint32 remote_port) |
virtual int | stream (StreamReturnCallbackFunction cb, void *initial_data, int length, uint32 local_port, uint32 remote_port, LSID parentLSID) |
uint64 | sendData (const void *data, uint32 length, bool isAck) |
void | setState (int state) |
uint8 | getState () |
void | setLocalChannelID (uint32 channelID) |
void | setRemoteChannelID (uint32 channelID) |
void | setWeakThis (std::tr1::shared_ptr< Connection > conn) |
USID | createNewUSID () |
void | markAcknowledgedPacket (uint64 receivedAckNum) |
void | parsePacket (Sirikata::Protocol::SST::SSTChannelHeader *received_channel_msg) |
void | handleInitPacket (Sirikata::Protocol::SST::SSTStreamHeader *received_stream_msg) |
void | handleReplyPacket (Sirikata::Protocol::SST::SSTStreamHeader *received_stream_msg) |
void | handleDataPacket (Sirikata::Protocol::SST::SSTStreamHeader *received_stream_msg) |
void | handleAckPacket (Sirikata::Protocol::SST::SSTChannelHeader *received_channel_msg, Sirikata::Protocol::SST::SSTStreamHeader *received_stream_msg) |
void | handleDatagram (Sirikata::Protocol::SST::SSTStreamHeader *received_stream_msg) |
void | receiveMessage (void *recv_buff, int len) |
uint64 | getRTOMicroseconds () |
void | eraseDisconnectedStream (Stream< EndPointType > *s) |
void | finalCleanup () |
Static Private Member Functions | |
static bool | createConnection (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > localEndPoint, EndPoint< EndPointType > remoteEndPoint, ConnectionReturnCallbackFunction cb, StreamReturnCallbackFunction scb) |
static bool | listen (ConnectionVariables< EndPointType > *sstConnVars, StreamReturnCallbackFunction cb, EndPoint< EndPointType > listeningEndPoint) |
static bool | unlisten (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > listeningEndPoint) |
static void | cleanup (std::tr1::shared_ptr< Connection< EndPointType > > conn) |
static void | closeConnections (ConnectionVariables< EndPointType > *sstConnVars) |
static void | handleReceive (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > remoteEndPoint, EndPoint< EndPointType > localEndPoint, void *recv_buffer, int len) |
Private Attributes | |
EndPoint< EndPointType > | mLocalEndPoint |
EndPoint< EndPointType > | mRemoteEndPoint |
ConnectionVariables < EndPointType > * | mSSTConnVars |
BaseDatagramLayerPtr | mDatagramLayer |
int | mState |
uint32 | mRemoteChannelID |
uint32 | mLocalChannelID |
uint64 | mTransmitSequenceNumber |
uint64 | mLastReceivedSequenceNumber |
std::map< LSID, std::tr1::shared_ptr< Stream < EndPointType > > > | mOutgoingSubstreamMap |
std::map< LSID, std::tr1::shared_ptr< Stream < EndPointType > > > | mIncomingSubstreamMap |
std::map< uint32, StreamReturnCallbackFunction > | mListeningStreamsCallbackMap |
std::map< uint32, std::vector < ReadDatagramCallback > > | mReadDatagramCallbacks |
PartialPayloadMap | mPartialReadDatagrams |
uint32 | mNumStreams |
std::deque < std::tr1::shared_ptr < ChannelSegment > > | mQueuedSegments |
std::deque < std::tr1::shared_ptr < ChannelSegment > > | mOutstandingSegments |
boost::mutex | mOutstandingSegmentsMutex |
uint16 | mCwnd |
int64 | mRTOMicroseconds |
bool | mFirstRTO |
boost::mutex | mQueueMutex |
uint16 | MAX_DATAGRAM_SIZE |
uint16 | MAX_PAYLOAD_SIZE |
uint32 | MAX_QUEUED_SEGMENTS |
float | CC_ALPHA |
Time | mLastTransmitTime |
std::tr1::weak_ptr< Connection < EndPointType > > | mWeakThis |
uint16 | mNumInitialRetransmissionAttempts |
google::protobuf::LogSilencer | logSilencer |
bool | mInSendingMode |
Friends | |
class | Stream< EndPointType > |
class | ConnectionManager< EndPointType > |
class | BaseDatagramLayer< EndPointType > |
typedef std::tr1::shared_ptr<BaseDatagramLayerType> Sirikata::SST::Connection< EndPointType >::BaseDatagramLayerPtr [private] |
typedef BaseDatagramLayer<EndPointType> Sirikata::SST::Connection< EndPointType >::BaseDatagramLayerType [private] |
typedef CallbackTypes<EndPointType> Sirikata::SST::Connection< EndPointType >::CBTypes [private] |
typedef std::tr1::unordered_map<EndPoint<EndPointType>, std::tr1::shared_ptr<Connection>, typename EndPoint<EndPointType>::Hasher > Sirikata::SST::Connection< EndPointType >::ConnectionMap [private] |
typedef Ptr Sirikata::SST::Connection< EndPointType >::ConnectionPtr |
typedef CBTypes::ConnectionReturnCallbackFunction Sirikata::SST::Connection< EndPointType >::ConnectionReturnCallbackFunction [private] |
typedef std::tr1::unordered_map<EndPoint<EndPointType>, ConnectionReturnCallbackFunction, typename EndPoint<EndPointType>::Hasher> Sirikata::SST::Connection< EndPointType >::ConnectionReturnCallbackMap [private] |
typedef CBTypes::DatagramSendDoneCallback Sirikata::SST::Connection< EndPointType >::DatagramSendDoneCallback [private] |
typedef std::map<LSID, std::tr1::shared_ptr< Stream<EndPointType> > > Sirikata::SST::Connection< EndPointType >::LSIDStreamMap [private] |
typedef std::vector<std::string> Sirikata::SST::Connection< EndPointType >::PartialPayloadList [private] |
typedef std::map<LSID, PartialPayloadList> Sirikata::SST::Connection< EndPointType >::PartialPayloadMap [private] |
typedef std::tr1::shared_ptr<Connection> Sirikata::SST::Connection< EndPointType >::Ptr |
typedef CBTypes::ReadDatagramCallback Sirikata::SST::Connection< EndPointType >::ReadDatagramCallback [private] |
typedef CBTypes::StreamReturnCallbackFunction Sirikata::SST::Connection< EndPointType >::StreamReturnCallbackFunction [private] |
typedef std::tr1::unordered_map<EndPoint<EndPointType>, StreamReturnCallbackFunction, typename EndPoint<EndPointType>::Hasher> Sirikata::SST::Connection< EndPointType >::StreamReturnCallbackMap [private] |
enum Sirikata::SST::Connection::ConnectionStates [private] |
Sirikata::SST::Connection< EndPointType >::Connection | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | localEndPoint, | ||
EndPoint< EndPointType > | remoteEndPoint | ||
) | [inline, private] |
virtual Sirikata::SST::Connection< EndPointType >::~Connection | ( | ) | [inline, virtual] |
void Sirikata::SST::Connection< EndPointType >::checkIfAlive | ( | std::tr1::shared_ptr< Connection< EndPointType > > | conn | ) | [inline, private] |
static void Sirikata::SST::Connection< EndPointType >::cleanup | ( | std::tr1::shared_ptr< Connection< EndPointType > > | conn | ) | [inline, static, private] |
References SST_IMPL_FAILURE.
virtual void Sirikata::SST::Connection< EndPointType >::close | ( | bool | force | ) | [inline, virtual] |
static void Sirikata::SST::Connection< EndPointType >::closeConnections | ( | ConnectionVariables< EndPointType > * | sstConnVars | ) | [inline, static, private] |
static bool Sirikata::SST::Connection< EndPointType >::createConnection | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | localEndPoint, | ||
EndPoint< EndPointType > | remoteEndPoint, | ||
ConnectionReturnCallbackFunction | cb, | ||
StreamReturnCallbackFunction | scb | ||
) | [inline, static, private] |
References Sirikata::SST::EndPoint< EndObjectType >::endPoint, Sirikata::SST::ConnectionVariables< EndPointType >::getAvailableChannel(), Sirikata::SST::Mutex::getMutex(), Sirikata::SST::ConnectionVariables< EndPointType >::sConnectionMap, Sirikata::SST::ConnectionVariables< EndPointType >::sConnectionReturnCallbackMap, SST_LOG, Sirikata::SST::ConnectionVariables< EndPointType >::sStaticMembersLock, and Sirikata::Logging::warn.
USID Sirikata::SST::Connection< EndPointType >::createNewUSID | ( | ) | [inline, private] |
References Sirikata::UUID::static_size.
virtual bool Sirikata::SST::Connection< EndPointType >::datagram | ( | void * | data, |
int | length, | ||
uint32 | local_port, | ||
uint32 | remote_port, | ||
DatagramSendDoneCallback | cb | ||
) | [inline, virtual] |
References Sirikata::serializePBJMessage(), SST_IMPL_FAILURE, and SST_IMPL_SUCCESS.
void Sirikata::SST::Connection< EndPointType >::eraseDisconnectedStream | ( | Stream< EndPointType > * | s | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::finalCleanup | ( | ) | [inline, private] |
const Context* Sirikata::SST::Connection< EndPointType >::getContext | ( | ) | [inline, private] |
uint64 Sirikata::SST::Connection< EndPointType >::getRTOMicroseconds | ( | ) | [inline, private] |
uint8 Sirikata::SST::Connection< EndPointType >::getState | ( | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::handleAckPacket | ( | Sirikata::Protocol::SST::SSTChannelHeader * | received_channel_msg, |
Sirikata::Protocol::SST::SSTStreamHeader * | received_stream_msg | ||
) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::handleDatagram | ( | Sirikata::Protocol::SST::SSTStreamHeader * | received_stream_msg | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::handleDataPacket | ( | Sirikata::Protocol::SST::SSTStreamHeader * | received_stream_msg | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::handleInitPacket | ( | Sirikata::Protocol::SST::SSTStreamHeader * | received_stream_msg | ) | [inline, private] |
References SST_LOG, and Sirikata::Logging::warn.
static void Sirikata::SST::Connection< EndPointType >::handleReceive | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | remoteEndPoint, | ||
EndPoint< EndPointType > | localEndPoint, | ||
void * | recv_buffer, | ||
int | len | ||
) | [inline, static, private] |
References Sirikata::SST::EndPoint< EndObjectType >::endPoint, Sirikata::SST::ConnectionVariables< EndPointType >::getAvailableChannel(), Sirikata::SST::Mutex::getMutex(), Sirikata::Logging::info, Sirikata::parsePBJMessage(), Sirikata::SST::EndPoint< EndObjectType >::port, Sirikata::SST::ConnectionVariables< EndPointType >::sConnectionMap, Sirikata::SST::ConnectionVariables< EndPointType >::sListeningConnectionsCallbackMap, SST_LOG, Sirikata::SST::ConnectionVariables< EndPointType >::sStaticMembersLock, and Sirikata::Logging::warn.
void Sirikata::SST::Connection< EndPointType >::handleReplyPacket | ( | Sirikata::Protocol::SST::SSTStreamHeader * | received_stream_msg | ) | [inline, private] |
References Sirikata::Logging::detailed, SST_IMPL_SUCCESS, and SST_LOG.
virtual void Sirikata::SST::Connection< EndPointType >::iClose | ( | bool | force | ) | [inline, virtual] |
static bool Sirikata::SST::Connection< EndPointType >::listen | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
StreamReturnCallbackFunction | cb, | ||
EndPoint< EndPointType > | listeningEndPoint | ||
) | [inline, static, private] |
References Sirikata::SST::EndPoint< EndObjectType >::endPoint, Sirikata::SST::ConnectionVariables< EndPointType >::getDatagramLayer(), Sirikata::SST::Mutex::getMutex(), Sirikata::SST::ConnectionVariables< EndPointType >::sListeningConnectionsCallbackMap, and Sirikata::SST::ConnectionVariables< EndPointType >::sStaticMembersLock.
void Sirikata::SST::Connection< EndPointType >::listenStream | ( | uint32 | port, |
StreamReturnCallbackFunction | scb | ||
) | [inline, private] |
virtual EndPoint<EndPointType> Sirikata::SST::Connection< EndPointType >::localEndPoint | ( | ) | [inline, virtual] |
void Sirikata::SST::Connection< EndPointType >::markAcknowledgedPacket | ( | uint64 | receivedAckNum | ) | [inline, private] |
References Sirikata::Timer::now().
void Sirikata::SST::Connection< EndPointType >::parsePacket | ( | Sirikata::Protocol::SST::SSTChannelHeader * | received_channel_msg | ) | [inline, private] |
References Sirikata::parsePBJMessage().
void Sirikata::SST::Connection< EndPointType >::receiveMessage | ( | void * | recv_buff, |
int | len | ||
) | [inline, private] |
References Sirikata::parsePBJMessage(), and SST_IMPL_SUCCESS.
Referenced by Sirikata::SST::Connection< EndPointType >::Connection().
virtual bool Sirikata::SST::Connection< EndPointType >::registerReadDatagramCallback | ( | uint32 | port, |
ReadDatagramCallback | cb | ||
) | [inline, virtual] |
Referenced by Sirikata::LibproxProximity::newSession().
virtual bool Sirikata::SST::Connection< EndPointType >::registerReadOrderedDatagramCallback | ( | ReadDatagramCallback | cb | ) | [inline, virtual] |
virtual EndPoint<EndPointType> Sirikata::SST::Connection< EndPointType >::remoteEndPoint | ( | ) | [inline, virtual] |
Referenced by Sirikata::LocationService::newSession(), and Sirikata::LibproxProximity::newSession().
uint64 Sirikata::SST::Connection< EndPointType >::sendData | ( | const void * | data, |
uint32 | length, | ||
bool | isAck | ||
) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::sendSSTChannelPacket | ( | Sirikata::Protocol::SST::SSTChannelHeader & | sstMsg | ) | [inline, private] |
References Sirikata::serializePBJMessage().
bool Sirikata::SST::Connection< EndPointType >::serviceConnection | ( | std::tr1::shared_ptr< Connection< EndPointType > > | conn | ) | [inline, private] |
References Sirikata::Logging::error, Sirikata::Timer::now(), and SILOG.
void Sirikata::SST::Connection< EndPointType >::serviceConnectionNoReturn | ( | std::tr1::shared_ptr< Connection< EndPointType > > | conn | ) | [inline, private] |
Referenced by Sirikata::SST::Connection< EndPointType >::sendData().
void Sirikata::SST::Connection< EndPointType >::setLocalChannelID | ( | uint32 | channelID | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::setRemoteChannelID | ( | uint32 | channelID | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::setState | ( | int | state | ) | [inline, private] |
void Sirikata::SST::Connection< EndPointType >::setWeakThis | ( | std::tr1::shared_ptr< Connection< EndPointType > > | conn | ) | [inline, private] |
virtual int Sirikata::SST::Connection< EndPointType >::stream | ( | StreamReturnCallbackFunction | cb, |
void * | initial_data, | ||
int | length, | ||
uint32 | local_port, | ||
uint32 | remote_port | ||
) | [inline, private, virtual] |
virtual int Sirikata::SST::Connection< EndPointType >::stream | ( | StreamReturnCallbackFunction | cb, |
void * | initial_data, | ||
int | length, | ||
uint32 | local_port, | ||
uint32 | remote_port, | ||
LSID | parentLSID | ||
) | [inline, private, virtual] |
static bool Sirikata::SST::Connection< EndPointType >::unlisten | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | listeningEndPoint | ||
) | [inline, static, private] |
void Sirikata::SST::Connection< EndPointType >::unlistenStream | ( | uint32 | port | ) | [inline, private] |
friend class BaseDatagramLayer< EndPointType > [friend] |
friend class ConnectionManager< EndPointType > [friend] |
friend class Stream< EndPointType > [friend] |
float Sirikata::SST::Connection< EndPointType >::CC_ALPHA [private] |
google::protobuf::LogSilencer Sirikata::SST::Connection< EndPointType >::logSilencer [private] |
uint16 Sirikata::SST::Connection< EndPointType >::MAX_DATAGRAM_SIZE [private] |
uint16 Sirikata::SST::Connection< EndPointType >::MAX_PAYLOAD_SIZE [private] |
uint32 Sirikata::SST::Connection< EndPointType >::MAX_QUEUED_SEGMENTS [private] |
uint16 Sirikata::SST::Connection< EndPointType >::mCwnd [private] |
BaseDatagramLayerPtr Sirikata::SST::Connection< EndPointType >::mDatagramLayer [private] |
bool Sirikata::SST::Connection< EndPointType >::mFirstRTO [private] |
std::map<LSID, std::tr1::shared_ptr< Stream<EndPointType> > > Sirikata::SST::Connection< EndPointType >::mIncomingSubstreamMap [private] |
bool Sirikata::SST::Connection< EndPointType >::mInSendingMode [private] |
uint64 Sirikata::SST::Connection< EndPointType >::mLastReceivedSequenceNumber [private] |
Time Sirikata::SST::Connection< EndPointType >::mLastTransmitTime [private] |
std::map<uint32, StreamReturnCallbackFunction> Sirikata::SST::Connection< EndPointType >::mListeningStreamsCallbackMap [private] |
uint32 Sirikata::SST::Connection< EndPointType >::mLocalChannelID [private] |
EndPoint<EndPointType> Sirikata::SST::Connection< EndPointType >::mLocalEndPoint [private] |
uint16 Sirikata::SST::Connection< EndPointType >::mNumInitialRetransmissionAttempts [private] |
uint32 Sirikata::SST::Connection< EndPointType >::mNumStreams [private] |
std::map<LSID, std::tr1::shared_ptr< Stream<EndPointType> > > Sirikata::SST::Connection< EndPointType >::mOutgoingSubstreamMap [private] |
std::deque< std::tr1::shared_ptr<ChannelSegment> > Sirikata::SST::Connection< EndPointType >::mOutstandingSegments [private] |
boost::mutex Sirikata::SST::Connection< EndPointType >::mOutstandingSegmentsMutex [private] |
PartialPayloadMap Sirikata::SST::Connection< EndPointType >::mPartialReadDatagrams [private] |
std::deque< std::tr1::shared_ptr<ChannelSegment> > Sirikata::SST::Connection< EndPointType >::mQueuedSegments [private] |
boost::mutex Sirikata::SST::Connection< EndPointType >::mQueueMutex [private] |
std::map<uint32, std::vector<ReadDatagramCallback> > Sirikata::SST::Connection< EndPointType >::mReadDatagramCallbacks [private] |
uint32 Sirikata::SST::Connection< EndPointType >::mRemoteChannelID [private] |
EndPoint<EndPointType> Sirikata::SST::Connection< EndPointType >::mRemoteEndPoint [private] |
int64 Sirikata::SST::Connection< EndPointType >::mRTOMicroseconds [private] |
ConnectionVariables<EndPointType>* Sirikata::SST::Connection< EndPointType >::mSSTConnVars [private] |
int Sirikata::SST::Connection< EndPointType >::mState [private] |
uint64 Sirikata::SST::Connection< EndPointType >::mTransmitSequenceNumber [private] |
std::tr1::weak_ptr<Connection<EndPointType> > Sirikata::SST::Connection< EndPointType >::mWeakThis [private] |