Sirikata
|
#include <SSTImpl.hpp>
Public Types | |
enum | StreamStates { DISCONNECTED = 1, CONNECTED = 2, PENDING_DISCONNECT = 3, PENDING_CONNECT = 4, NOT_FINISHED_CONSTRUCTING__CALL_INIT } |
typedef std::tr1::shared_ptr < Stream > | Ptr |
typedef Ptr | StreamPtr |
typedef Connection< EndPointType > | ConnectionType |
typedef EndPoint< EndPointType > | EndpointType |
typedef CallbackTypes < EndPointType > | CBTypes |
typedef CBTypes::StreamReturnCallbackFunction | StreamReturnCallbackFunction |
typedef CBTypes::ReadCallback | ReadCallback |
typedef std::tr1::unordered_map < EndPoint< EndPointType > , StreamReturnCallbackFunction, typename EndPoint < EndPointType >::Hasher > | StreamReturnCallbackMap |
Public Member Functions | |
virtual | ~Stream () |
bool | connected () |
void | listenSubstream (uint32 port, StreamReturnCallbackFunction scb) |
void | unlistenSubstream (uint32 port) |
virtual int | write (const uint8 *data, int len) |
virtual bool | registerReadCallback (ReadCallback callback) |
virtual bool | close (bool force) |
virtual void | setPriority (int pri) |
virtual int | priority () |
virtual std::tr1::weak_ptr < Connection< EndPointType > > | connection () |
virtual int | createChildStream (StreamReturnCallbackFunction cb, void *data, int length, uint32 local_port, uint32 remote_port) |
virtual EndPoint< EndPointType > | localEndPoint () |
virtual EndPoint< EndPointType > | remoteEndPoint () |
virtual uint8 | getState () |
const Context * | getContext () |
Static Public Member Functions | |
static bool | connectStream (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > localEndPoint, EndPoint< EndPointType > remoteEndPoint, StreamReturnCallbackFunction cb) |
static bool | listen (ConnectionVariables< EndPointType > *sstConnVars, StreamReturnCallbackFunction cb, EndPoint< EndPointType > listeningEndPoint) |
static bool | unlisten (ConnectionVariables< EndPointType > *sstConnVars, EndPoint< EndPointType > listeningEndPoint) |
Private Member Functions | |
Stream (LSID parentLSID, std::tr1::weak_ptr< Connection< EndPointType > > conn, uint32 local_port, uint32 remote_port, USID usid, LSID lsid, StreamReturnCallbackFunction cb, ConnectionVariables< EndPointType > *sstConnVars) | |
int | init (void *initial_data, uint32 length, bool remotelyInitiated, LSID remoteLSID) |
uint8 * | receiveBuffer () |
uint8 * | receiveBitmap () |
void | initRemoteLSID (LSID remoteLSID) |
void | sendKeepAlive (std::tr1::weak_ptr< Stream< EndPointType > > wstrm, std::tr1::shared_ptr< Connection< EndPointType > > conn) |
void | serviceStreamNoReturn (std::tr1::shared_ptr< Stream< EndPointType > > strm, std::tr1::shared_ptr< Connection< EndPointType > > conn) |
bool | serviceStream (std::tr1::shared_ptr< Stream< EndPointType > > strm, std::tr1::shared_ptr< Connection< EndPointType > > conn) |
void | resendUnackedPackets () |
void | sendToApp (uint32 skipLength) |
void | receiveData (Sirikata::Protocol::SST::SSTStreamHeader *streamMsg, const void *buffer, uint64 offset, uint32 len) |
LSID | getLSID () |
LSID | getRemoteLSID () |
void | updateRTO (Time sampleStartTime, Time sampleEndTime) |
void | sendInitPacket (void *data, uint32 len) |
void | sendAckPacket () |
uint64 | sendDataPacket (const void *data, uint32 len, uint64 offset) |
void | sendReplyPacket (void *data, uint32 len, LSID remoteLSID) |
Static Private Member Functions | |
static void | connectionCreated (int errCode, std::tr1::shared_ptr< Connection< EndPointType > > c) |
Private Attributes | |
uint8 | mState |
uint32 | mLocalPort |
uint32 | mRemotePort |
uint64 | mNumBytesSent |
LSID | mParentLSID |
std::tr1::weak_ptr< Connection < EndPointType > > | mConnection |
const Context * | mContext |
std::map< uint64, std::tr1::shared_ptr < StreamBuffer > > | mChannelToBufferMap |
std::map< uint64, uint32 > | mChannelToStreamOffsetMap |
std::deque < std::tr1::shared_ptr < StreamBuffer > > | mQueuedBuffers |
uint32 | mCurrentQueueLength |
USID | mUSID |
LSID | mLSID |
LSID | mRemoteLSID |
uint16 | MAX_PAYLOAD_SIZE |
uint32 | MAX_QUEUE_LENGTH |
uint32 | MAX_RECEIVE_WINDOW |
boost::mutex | mQueueMutex |
bool | mFirstRTO |
int64 | mStreamRTOMicroseconds |
float | FL_ALPHA |
uint32 | mTransmitWindowSize |
uint32 | mReceiveWindowSize |
uint32 | mNumOutstandingBytes |
int64 | mNextByteExpected |
int64 | mLastContiguousByteReceived |
Time | mLastSendTime |
Time | mLastReceiveTime |
uint8 * | mReceiveBuffer |
uint8 * | mReceiveBitmap |
boost::recursive_mutex | mReceiveBufferMutex |
ReadCallback | mReadCallback |
StreamReturnCallbackFunction | mStreamReturnCallback |
bool | mConnected |
uint8 * | mInitialData |
uint16 | mInitialDataLength |
uint8 | mNumInitRetransmissions |
uint8 | MAX_INIT_RETRANSMISSIONS |
ConnectionVariables < EndPointType > * | mSSTConnVars |
std::tr1::weak_ptr< Stream < EndPointType > > | mWeakThis |
EndPoint< EndPointType > | mLocalEndPoint |
Store the endpoints here to avoid talking to mConnection. | |
EndPoint< EndPointType > | mRemoteEndPoint |
Friends | |
class | Connection< EndPointType > |
typedef CallbackTypes<EndPointType> Sirikata::SST::Stream< EndPointType >::CBTypes |
typedef Connection<EndPointType> Sirikata::SST::Stream< EndPointType >::ConnectionType |
typedef EndPoint<EndPointType> Sirikata::SST::Stream< EndPointType >::EndpointType |
typedef std::tr1::shared_ptr<Stream> Sirikata::SST::Stream< EndPointType >::Ptr |
typedef CBTypes::ReadCallback Sirikata::SST::Stream< EndPointType >::ReadCallback |
typedef Ptr Sirikata::SST::Stream< EndPointType >::StreamPtr |
typedef CBTypes::StreamReturnCallbackFunction Sirikata::SST::Stream< EndPointType >::StreamReturnCallbackFunction |
typedef std::tr1::unordered_map<EndPoint<EndPointType>, StreamReturnCallbackFunction, typename EndPoint<EndPointType>::Hasher> Sirikata::SST::Stream< EndPointType >::StreamReturnCallbackMap |
enum Sirikata::SST::Stream::StreamStates |
virtual Sirikata::SST::Stream< EndPointType >::~Stream | ( | ) | [inline, virtual] |
Sirikata::SST::Stream< EndPointType >::Stream | ( | LSID | parentLSID, |
std::tr1::weak_ptr< Connection< EndPointType > > | conn, | ||
uint32 | local_port, | ||
uint32 | remote_port, | ||
USID | usid, | ||
LSID | lsid, | ||
StreamReturnCallbackFunction | cb, | ||
ConnectionVariables< EndPointType > * | sstConnVars | ||
) | [inline, private] |
virtual bool Sirikata::SST::Stream< EndPointType >::close | ( | bool | force | ) | [inline, virtual] |
Referenced by Sirikata::Server::newStream().
bool Sirikata::SST::Stream< EndPointType >::connected | ( | ) | [inline] |
virtual std::tr1::weak_ptr<Connection<EndPointType> > Sirikata::SST::Stream< EndPointType >::connection | ( | ) | [inline, virtual] |
Referenced by Sirikata::LocationService::newSession(), and Sirikata::LibproxProximity::newSession().
static void Sirikata::SST::Stream< EndPointType >::connectionCreated | ( | int | errCode, |
std::tr1::shared_ptr< Connection< EndPointType > > | c | ||
) | [inline, static, private] |
References SST_IMPL_FAILURE, and SST_IMPL_SUCCESS.
static bool Sirikata::SST::Stream< EndPointType >::connectStream | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | localEndPoint, | ||
EndPoint< EndPointType > | remoteEndPoint, | ||
StreamReturnCallbackFunction | cb | ||
) | [inline, static] |
References Sirikata::SST::EndPoint< EndObjectType >::endPoint, Sirikata::Logging::error, Sirikata::SST::ConnectionVariables< EndPointType >::getDatagramLayer(), Sirikata::SST::BaseDatagramLayer< EndPointType >::getUnusedPort(), Sirikata::SST::ConnectionVariables< EndPointType >::mStreamReturnCallbackMap, Sirikata::SST::EndPoint< EndObjectType >::port, and SST_LOG.
virtual int Sirikata::SST::Stream< EndPointType >::createChildStream | ( | StreamReturnCallbackFunction | cb, |
void * | data, | ||
int | length, | ||
uint32 | local_port, | ||
uint32 | remote_port | ||
) | [inline, virtual] |
const Context* Sirikata::SST::Stream< EndPointType >::getContext | ( | ) | [inline] |
LSID Sirikata::SST::Stream< EndPointType >::getLSID | ( | ) | [inline, private] |
LSID Sirikata::SST::Stream< EndPointType >::getRemoteLSID | ( | ) | [inline, private] |
virtual uint8 Sirikata::SST::Stream< EndPointType >::getState | ( | ) | [inline, virtual] |
int Sirikata::SST::Stream< EndPointType >::init | ( | void * | initial_data, |
uint32 | length, | ||
bool | remotelyInitiated, | ||
LSID | remoteLSID | ||
) | [inline, private] |
Post a keep-alive task...
void Sirikata::SST::Stream< EndPointType >::initRemoteLSID | ( | LSID | remoteLSID | ) | [inline, private] |
static bool Sirikata::SST::Stream< EndPointType >::listen | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
StreamReturnCallbackFunction | cb, | ||
EndPoint< EndPointType > | listeningEndPoint | ||
) | [inline, static] |
void Sirikata::SST::Stream< EndPointType >::listenSubstream | ( | uint32 | port, |
StreamReturnCallbackFunction | scb | ||
) | [inline] |
References SST_IMPL_FAILURE.
Referenced by Sirikata::LocationService::newSession().
virtual EndPoint<EndPointType> Sirikata::SST::Stream< EndPointType >::localEndPoint | ( | ) | [inline, virtual] |
virtual int Sirikata::SST::Stream< EndPointType >::priority | ( | ) | [inline, virtual] |
uint8* Sirikata::SST::Stream< EndPointType >::receiveBitmap | ( | ) | [inline, private] |
uint8* Sirikata::SST::Stream< EndPointType >::receiveBuffer | ( | ) | [inline, private] |
void Sirikata::SST::Stream< EndPointType >::receiveData | ( | Sirikata::Protocol::SST::SSTStreamHeader * | streamMsg, |
const void * | buffer, | ||
uint64 | offset, | ||
uint32 | len | ||
) | [inline, private] |
References Sirikata::Timer::now().
virtual bool Sirikata::SST::Stream< EndPointType >::registerReadCallback | ( | ReadCallback | callback | ) | [inline, virtual] |
virtual EndPoint<EndPointType> Sirikata::SST::Stream< EndPointType >::remoteEndPoint | ( | ) | [inline, virtual] |
Referenced by Sirikata::Server::newStream().
void Sirikata::SST::Stream< EndPointType >::resendUnackedPackets | ( | ) | [inline, private] |
void Sirikata::SST::Stream< EndPointType >::sendAckPacket | ( | ) | [inline, private] |
References Sirikata::serializePBJMessage().
uint64 Sirikata::SST::Stream< EndPointType >::sendDataPacket | ( | const void * | data, |
uint32 | len, | ||
uint64 | offset | ||
) | [inline, private] |
References Sirikata::serializePBJMessage().
void Sirikata::SST::Stream< EndPointType >::sendInitPacket | ( | void * | data, |
uint32 | len | ||
) | [inline, private] |
References Sirikata::serializePBJMessage().
void Sirikata::SST::Stream< EndPointType >::sendKeepAlive | ( | std::tr1::weak_ptr< Stream< EndPointType > > | wstrm, |
std::tr1::shared_ptr< Connection< EndPointType > > | conn | ||
) | [inline, private] |
void Sirikata::SST::Stream< EndPointType >::sendReplyPacket | ( | void * | data, |
uint32 | len, | ||
LSID | remoteLSID | ||
) | [inline, private] |
References Sirikata::serializePBJMessage().
void Sirikata::SST::Stream< EndPointType >::sendToApp | ( | uint32 | skipLength | ) | [inline, private] |
bool Sirikata::SST::Stream< EndPointType >::serviceStream | ( | std::tr1::shared_ptr< Stream< EndPointType > > | strm, |
std::tr1::shared_ptr< Connection< EndPointType > > | conn | ||
) | [inline, private] |
References Sirikata::Timer::now(), Sirikata::Time::null(), and SST_IMPL_FAILURE.
void Sirikata::SST::Stream< EndPointType >::serviceStreamNoReturn | ( | std::tr1::shared_ptr< Stream< EndPointType > > | strm, |
std::tr1::shared_ptr< Connection< EndPointType > > | conn | ||
) | [inline, private] |
virtual void Sirikata::SST::Stream< EndPointType >::setPriority | ( | int | pri | ) | [inline, virtual] |
static bool Sirikata::SST::Stream< EndPointType >::unlisten | ( | ConnectionVariables< EndPointType > * | sstConnVars, |
EndPoint< EndPointType > | listeningEndPoint | ||
) | [inline, static] |
void Sirikata::SST::Stream< EndPointType >::unlistenSubstream | ( | uint32 | port | ) | [inline] |
void Sirikata::SST::Stream< EndPointType >::updateRTO | ( | Time | sampleStartTime, |
Time | sampleEndTime | ||
) | [inline, private] |
References Sirikata::Logging::insane, and SST_LOG.
virtual int Sirikata::SST::Stream< EndPointType >::write | ( | const uint8 * | data, |
int | len | ||
) | [inline, virtual] |
friend class Connection< EndPointType > [friend] |
float Sirikata::SST::Stream< EndPointType >::FL_ALPHA [private] |
uint8 Sirikata::SST::Stream< EndPointType >::MAX_INIT_RETRANSMISSIONS [private] |
uint16 Sirikata::SST::Stream< EndPointType >::MAX_PAYLOAD_SIZE [private] |
uint32 Sirikata::SST::Stream< EndPointType >::MAX_QUEUE_LENGTH [private] |
uint32 Sirikata::SST::Stream< EndPointType >::MAX_RECEIVE_WINDOW [private] |
std::map<uint64, std::tr1::shared_ptr<StreamBuffer> > Sirikata::SST::Stream< EndPointType >::mChannelToBufferMap [private] |
std::map<uint64, uint32> Sirikata::SST::Stream< EndPointType >::mChannelToStreamOffsetMap [private] |
bool Sirikata::SST::Stream< EndPointType >::mConnected [private] |
std::tr1::weak_ptr<Connection<EndPointType> > Sirikata::SST::Stream< EndPointType >::mConnection [private] |
const Context* Sirikata::SST::Stream< EndPointType >::mContext [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mCurrentQueueLength [private] |
bool Sirikata::SST::Stream< EndPointType >::mFirstRTO [private] |
uint8* Sirikata::SST::Stream< EndPointType >::mInitialData [private] |
uint16 Sirikata::SST::Stream< EndPointType >::mInitialDataLength [private] |
int64 Sirikata::SST::Stream< EndPointType >::mLastContiguousByteReceived [private] |
Time Sirikata::SST::Stream< EndPointType >::mLastReceiveTime [private] |
Time Sirikata::SST::Stream< EndPointType >::mLastSendTime [private] |
EndPoint<EndPointType> Sirikata::SST::Stream< EndPointType >::mLocalEndPoint [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mLocalPort [private] |
LSID Sirikata::SST::Stream< EndPointType >::mLSID [private] |
int64 Sirikata::SST::Stream< EndPointType >::mNextByteExpected [private] |
uint64 Sirikata::SST::Stream< EndPointType >::mNumBytesSent [private] |
uint8 Sirikata::SST::Stream< EndPointType >::mNumInitRetransmissions [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mNumOutstandingBytes [private] |
LSID Sirikata::SST::Stream< EndPointType >::mParentLSID [private] |
std::deque< std::tr1::shared_ptr<StreamBuffer> > Sirikata::SST::Stream< EndPointType >::mQueuedBuffers [private] |
boost::mutex Sirikata::SST::Stream< EndPointType >::mQueueMutex [private] |
ReadCallback Sirikata::SST::Stream< EndPointType >::mReadCallback [private] |
uint8* Sirikata::SST::Stream< EndPointType >::mReceiveBitmap [private] |
uint8* Sirikata::SST::Stream< EndPointType >::mReceiveBuffer [private] |
boost::recursive_mutex Sirikata::SST::Stream< EndPointType >::mReceiveBufferMutex [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mReceiveWindowSize [private] |
EndPoint<EndPointType> Sirikata::SST::Stream< EndPointType >::mRemoteEndPoint [private] |
LSID Sirikata::SST::Stream< EndPointType >::mRemoteLSID [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mRemotePort [private] |
ConnectionVariables<EndPointType>* Sirikata::SST::Stream< EndPointType >::mSSTConnVars [private] |
uint8 Sirikata::SST::Stream< EndPointType >::mState [private] |
StreamReturnCallbackFunction Sirikata::SST::Stream< EndPointType >::mStreamReturnCallback [private] |
int64 Sirikata::SST::Stream< EndPointType >::mStreamRTOMicroseconds [private] |
uint32 Sirikata::SST::Stream< EndPointType >::mTransmitWindowSize [private] |
USID Sirikata::SST::Stream< EndPointType >::mUSID [private] |
std::tr1::weak_ptr<Stream<EndPointType> > Sirikata::SST::Stream< EndPointType >::mWeakThis [private] |