_uc_tek_updater_thread.pas

unit _uc_tek_updater_thread;

interface

uses
     Windows,SysUtils,ComCtrls,Classes,ScktComp;

type
  TTEK_UPDATER_THREAD = class(TThread)
  private
   FCCC       :TClientSocket;
   _WinSk     :TWinSocketStream;
   StatError  :Integer;
   _sDataZund : string;
   _sDataRESPONSE :String;
   procedure _OnTekUpTerminated(Sender: TObject);

  protected
    procedure Execute; override;

  public


    _tek_up_Domain : string;
    _tek_up_port   : integer;
    _tek_up_full_http_link_stok : string;
    _tek_up_com_path_plus_Tik_File : string;
    _tek_up_zunderCOM :TTreeNode;
    constructor Create;
    destructor Destroy; override;
  end;

implementation

  uses unit1,_uc_refs_vars,_uc_refs_consts,_uc_ip_codecs,_uc_tek_updater_func;

{ TTekTekTHREAD }

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
constructor TTEK_UPDATER_THREAD.Create;
begin

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

end;

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


//------------------------------------------------------------------------------
procedure TTEK_UPDATER_THREAD._OnTekUpTerminated(Sender: TObject);
begin

//TLogger.Log(ret+sep+ret+'_OnTekTerminated'+ret+_tek_Domain+ret+_tek_full_http_link_stok+ret+_tek_com_path_plus_Tik_File);
//TLogger.Log('TComUPDATERdata:'+_tek_up_Domain+ret+_sDataRESPONSE+ret+sep+ret+_sDataZund+ret+sep);

if (NOT _tek_up_zunderCOM._EXO_NODE_IS_STOPING) then  //avoid coincidence
TComUPDATER._goUpdaterComTekData(_sDataRESPONSE,_tek_up_zunderCOM);

end;

//------------------------------------------------------------------------------
procedure TTEK_UPDATER_THREAD.Execute;
var
_RcvL:integer;
_pBuf: PChar;
aa : string;
begin

StatError:=0;
_RcvL:=0;
_sDataRESPONSE:='';


try

// this will BOYA dend ipwhatver it is = good or lan
//cee:='u=32&b='+encry(ip_to_int(AA_LOCAL_USED_IP));
//if (a_NAT_is_on) then cee:='u=32&s=1'; // made WAN in start_masters !!!

aa:='e=_T2&v='+_VV_LOCAL_USER_PC_ID;
if (_VV_LOCAL_CONFIG_ROUTER_IS_ON) then aa:=aa+'&n=1'  // NAT-Active
else aa:=aa+'&c='+TIpCodecs.encry(TIpCodecs.ip_to_int(_VV_LOCAL_USER_IP_MASTER));  // NORMAL
// this will BOYA dend ipwhatver it is = good or lan

_sDataZund:='GET '+_tek_up_com_path_plus_Tik_File+'?'+aa+' HTTP/1.0'+ret+
            'User-Agent: '+_C_EXOSEE_WEB_TEK_USER_MERDA+ret+
            'Host: '+_tek_up_Domain+ret+
            'Connection: Close'+ret+
            ret;



            FCCC.Host_name := _tek_up_Domain;
            FCCC.Port      := _tek_up_port;
            FCCC.Active    := True;
           

            if FCCC.Socket.Connected then
            begin

                _WinSk := TWinSocketStream.Create(FCCC.Socket, 10000);
                try ////----------------t2

                _WinSk.Write(_sDataZund[1],length(_sDataZund));


                      GetMem(_pBuf, _C_EXOSEE_WEB_TEK_BUFFER_SIZE);
                      try

                          while (not Terminated)and(FCCC.Socket.Connected) do
                          begin

                             if _WinSk.WaitForData(10000) then   // 10 sec ...
                             begin
                             _RcvL:=_WinSk.Read(_pBuf^,_C_EXOSEE_WEB_TEK_BUFFER_SIZE);
                             _sDataRESPONSE:=_sDataRESPONSE+ copy(_pBuf,1,_RcvL);
                             end; // 5 sec data on

                          if _RcvL=0 then break;

                          end; // end Loop ---------------------------------------------------------------



                      finally FreeMem(_pBuf); end; //------------4




                finally
                FCCC.Socket.Close;
                _WinSk.Free;
                end; //----------------t2

            end
            else
            StatError:=1; //error_connection);



except  end;  // avoid errors

end;

end.





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