int32 OsclSocketServI::Connect(uint32 aMessageSlots, bool aShareSession)
{
    CONSTRUCT_STATS(this);

#if (PV_SOCKET_SERVI_STATS)
    iServiStats = PVServiStats::Create();
    START_SERVI_STATS(EServiSession_All);
#endif

    //Connect to Oscl socket server

    OSCL_UNUSED_ARG(aMessageSlots);
    OSCL_UNUSED_ARG(aShareSession);

    //should only connect once
    if (iServState == ESocketServ_Connected)
    {
        return OsclErrGeneral;
    }

#ifdef OsclSocketStartup
    //startup the socket system.
    bool ok;
    OsclSocketStartup(ok);
    if (!ok)
    {
        return OsclErrGeneral;
    }
#endif//OsclSocketStartup

    iServState = ESocketServ_Idle;

    //Start the server thread or AO
    int32 err = StartServImp();
    if (err != OsclErrNone)
    {
        return err;
    }

    //check state.
    if (iServState != ESocketServ_Connected)
    {
        //cleanup after a failure.
        Close(false);
        return OsclErrGeneral;
    }
    return OsclErrNone;
}
void OsclSocketServI::ConstructL()
{
    iSockServRequestList.iActiveRequests.reserve(6);
    ConstructServImp();
    CONSTRUCT_STATS(this);
}