Re[7]: Красота кода
От: iix  
Дата: 01.02.06 08:28
Оценка:
А вот к чему я пришол:

bool CIMProto::Login2(char *login,char *pass,u_long status)
{
    unsigned int thrdaddr;

    if(connected && !logining)
    {
        try
        {
            if(sendmtx=CreateMutex(NULL,false,NULL))
            {
                DbgPrint("Login2: send CreateMutex error...");
                throw 0;
            }
        
            if(recvmtx=CreateMutex(NULL,false,NULL))
            {
                DbgPrint("Login2: recv CreateMutex error...");
                throw 1;
            }
        
            if(pingthrd=(HANDLE)_beginthreadex(NULL,0,(PTHREAD)PingThread,this,0,&thrdaddr))
            {
                DbgPrint("Login2: ping _beginthreadex error...");
                throw 2;
            }

            if(recvthrd=(HANDLE)_beginthreadex(NULL,0,(PTHREAD)RecvThread,this,0,&thrdaddr))
            {
                DbgPrint("Login2: recv _beginthreadex error...");
                throw 3;
            }
        }
        catch(int errcode)
        {
            switch(errcode)
            {
            case 3:
                {
                    TerminateThread(pingthrd,0);
                    WaitForSingleObject(pingthrd,INFINITE);
                    CloseHandle(pingthrd);
                }
            case 2: CloseHandle(recvmtx);
            case 1: CloseHandle(sendmtx);
            }

            DbgPrint("Login2: error...");
            return false;
        }

        logining=true;
        DbgPrint("Login2: successfull...");
        return true;
    }

    DbgPrint("Login2: not connected or loginning error...");
    return false;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.