private void OnTransportStarted(TransportProtocol protocol)
{
FunapiTransport transport = GetTransport(protocol);
DebugUtils.Assert(transport != null);
DebugUtils.Log("{0} Transport started.", protocol);
lock (state_lock_)
{
if (session_id_.Length > 0)
{
state_ = State.kConnected;
response_timer_ = 0f;
if (session_reliability_ && protocol == TransportProtocol.kTcp && seq_recvd_ != 0)
{
transport.state = FunapiTransport.State.kWaitForAck;
SendAck(transport, seq_recvd_ + 1);
}
else
{
SetTransportStarted(transport);
}
}
else if (state_ == State.kStarted || state_ == State.kStopped)
{
state_ = State.kWaitForSession;
transport.state = FunapiTransport.State.kWaitForSession;
// To get a session id
SendEmptyMessage(protocol);
}
else if (state_ == State.kWaitForSession)
{
transport.state = FunapiTransport.State.kWaitForSession;
}
}
}