bool AsioServerTransport::isConnected(const SessionPtr &sessionPtr)
{
    AsioSessionState & sessionState =
        dynamic_cast<AsioSessionState &>(sessionPtr->getSessionState());

    AsioSessionStatePtr sessionStatePtr = sessionState.sharedFromThis();

    return sessionStatePtr.get() && sessionStatePtr->implIsConnected();
}
    bool AsioServerTransport::isConnected(const SessionPtr &sessionPtr)
    {
        AsioSessionState & sessionState = 
            dynamic_cast<AsioSessionState &>(sessionPtr->getProactor());

        AsioSessionStatePtr sessionStatePtr = sessionState.shared_from_this();

        // TODO: what to do for non-TCP sockets
        return 
            sessionStatePtr.get() 
            && isFdConnected(sessionStatePtr->implGetNative());
    }