_uc_i_builder.pas

unit _uc_i_builder;

interface

uses
   SysUtils, Classes,ScktComp,comctrls,forms;

type


  T_i_builder_THREAD = class(TThread)
  private
    FCCC :TClientSocket;
    sDTS,_ssdbg :string;
    _statCode   :byte;


  protected
    procedure Execute; override;
    procedure On_i_builder_thread_terminated(Sender: TObject);

  public
    _newUzoPP   :string;
    _comADRiDX  :string;
    _dadyComNode:TTreeNode;

    constructor Create;
    destructor Destroy; override;

  end;

implementation

uses unit1,_uc_funcs,_uc_refs_vars,_uc_refs_consts,_uc_crypto,_uc_cs_new1ini;

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
constructor T_i_builder_THREAD.Create;
begin

inherited Create(True); // Intially suspended
FreeOnTerminate := True;
OnTerminate     := On_i_builder_thread_terminated;
FCCC            := TClientSocket.Create(Application);
FCCC.ClientType := ctBlocking;

end;

//------------------------------------------------------------------------------
destructor T_i_builder_THREAD.Destroy;
begin
  FCCC.Free;
  inherited;
end;


//------------------------------------------------------------------------------
procedure T_i_builder_THREAD.On_i_builder_thread_terminated(Sender: TObject);
begin

//_DoDebugLOG('On_i_builder_terminated:'+_ssdbg);    //  sDTS ;

//dec(_ACTIVE_THREADS_COUNT);

  case _statCode of    // add user + reason
    // 0 : _FXOC_MAIN.TheLOGGER.Log('eR/0 :'+_newUzoPP); // no coonection
    // 1 : _FXOC_MAIN.TheLOGGER.Log('eR/1 :',1); // 1_He_NoComInHome
     2 : _FXOC_MAIN.TheLOGGER.Log('I_AS_LAN, _X_REJECTED_i',1);  //  -asLAN_not_Accepted
     3 : _FXOC_MAIN.TheLOGGER.Log('X_BANNED_i',1); // he banned  me there
     4 : _FXOC_MAIN.TheLOGGER.Log('_e781',1); // errKode
     5 : _FXOC_MAIN.TheLOGGER.Log('_e782',1); // errKode
     7 : _FXOC_MAIN.TheLOGGER.Log('_e783',1); // errKode
    10 : set_iBuilt_1_DataNode(_newUzoPP,sDTS,_dadyComNode);

  end;



end;

//------------------------------------------------------------------------------
procedure T_i_builder_THREAD.Execute;
var
sk: TWinSocketStream;
begin

(*  *)
//inc(_ACTIVE_THREADS_COUNT);

_ssdbg:='_ss_dbg_1';

try

           FCCC.Host__ip  := _newUzoPP; // 11.11.11.11
           FCCC.Port      := _C_EXOSEE_MASTER_SERVER_PORT;
           FCCC.Active    := True;

           sk := TWinSocketStream.Create(FCCC.Socket, 20000);
           try ////----------------t2

           _ssdbg:='_ss_dbg_2';

                 FCCC.Socket.SendText(TCrypto._BarzaToon(_EXO_iBUILDER));    // send

                 if sk.WaitForData(10000) then           // wait  10 sec
                 begin
                 sDTS:=FCCC.Socket.ReceiveText;


                     _ssdbg:='_ss_dbg_3';

                     if (sDTS[2]='A') and (sDTS[4]='a') then   // signal given ... then go ....
                     begin
                     _ssdbg:='_ss_dbg_4';
                     _statCode :=7;
                     FCCC.Socket.SendText(TCrypto._BarzaToon(':A'+_VV_LOCAL_USER_MY8_BOOLEANS+'A;'+ // all my bools , lan/wan...status....etc
                                                             ':B'+_VV_LOCAL_USER_NIKO+'B;'+
                                                             ':C'+_VV_LOCAL_USER_COUNTRY_CODE+'C;'+
                                                             ':D'+_VV_LOCAL_USER_MESSAGE+'D;'+
                                                             ':E_E;'+
                                                             ':F'+_VV_LOCAL_USER_PC_ID+'F;'+  // com is as needed
                                                             ':G'+_comADRiDX+'G;'
                                                             )); // send my data



                     _ssdbg:='_ss_dbg_5';

                         if sk.WaitForData(10000) then
                         begin
                         sDTS:=TCrypto.bndaka(FCCC.Socket.ReceiveText);

                         try

                               case sDTS[1] of
                                 ':' : _statCode :=10; // is ok data is with
                                 '1' : _statCode :=1; //1NoComInHome
                                 '2' : _statCode :=2; //2NoAxLAN
                                 '3' : _statCode :=3; //3Banned
                                  else _statCode :=4; //zzz
                               end;

                         except _ssdbg:='_ss_dbg_5a!!!_bug_catched!'; end;

                         end;
                     _ssdbg:='_ss_dbg_6';

                     FCCC.Socket.SendText('####'); /// any data ! just to close there
                     end
                     else _statCode:=5;

                 end;

            _ssdbg:='_ss_dbg_7';

            finally
            FCCC.Socket.Close;
            //FCCC.Active  :=false;   //thread destrucot will free it
            sk.Free;
            end; //----------------t2   FCCC.Socket.Close;


       _ssdbg:='_ss_dbg_8';


Except _ssdbg:='_ss_dbg_9'; end;  // avoid errors



end;


//------------------------------------------------------------------------------


end.





../delphi71code/exosee-code-source/uc_i_builder-pas..