unit main;
{$mode objfpc}{$H+}
interface
uses
cmem,cthreads,Classes, SysUtils, passqlite, BlckSock, synsock, oxounit, BaseUnix;
Function CallConv (S1: String): String;
var
LiteDB1 : Tlitedb;
RegExpStr1,RegExpEnd1,PhoneSysID1,dtimeout1,SysPort1,SysBind1,SiteID1, SysType1 :String;
Sock:TTCPBlockSocket;
ClientSock:TSocket;
par,LCMD,PortNo:String;
Baud,databits,stopbits:integer;
parity:char;
active,hardwarefl,softwarefl:boolean;
pid : pid_t;
secs : longint;
type
TTCPEchoThrd = class(TThread)
private
Sock:TTCPBlockSocket;
CSock: TSocket;
S:String;
public
Constructor Create (hsock:tSocket);
procedure Execute; override;
end;
tmyconverterfunc=function(AData:String):String;
implementation
var
myconverterfunc:tmyconverterfunc;
Constructor TTCPEchoThrd.Create(Hsock:TSocket);
begin
Csock := Hsock;
FreeOnTerminate:=False;
inherited create(false);
end;
procedure TTCPEchoThrd.Execute;
begin
sock:=TTCPBlockSocket.create;
FreeOnTerminate := True;
try
Sock.socket:=CSock;
sock.GetSins;
with sock do
begin
repeat
if terminated then break;
S := RecvString(strToInt(dtimeout1));
if lastError<>0 then break;
myconverterfunc:=@CallConv;
myconverterfunc(S);
if lastError<>0 then break;
until false;
end;
finally
Sock.Free;
end;
end;
Function CallConv (S1: String): String;
begin
oxoparse1.PbxGet(RegExpStr1,S1,SiteID1);
end;
begin
{ daemonize }
pid := fpFork;
Case pid of
0 : Begin { we are in the child }
Close(input); { close standard in }
Close(output); { close standard out }
Assign(output,'/dev/null');
ReWrite(output);
Close(stderr); { close standard error }
Assign(stderr,'/dev/null');
ReWrite(stderr);
End;
-1 : secs := 0; { forking error, so run as non-daemon }
Else Halt; { successful fork, so parent dies }
End;
LiteDB1 := TliteDB.Create(nil, '/var/lib/vtlogger/collex.sdb3');
LiteDB1.Query('SELECT * from sys_col where col_active = 1');
sysType1 := LiteDB1.Results[0][1];
SiteID1 := LiteDB1.Results[0][3];
SysPort1 := LiteDB1.Results[0][4];
SysBind1 := LiteDB1.Results[0][5];
dtimeout1 := LiteDB1.Results[0][11];
LiteDB1.Query('SELECT * from sys_par where sys_id = '+sysType1);
PhoneSysID1 := LiteDB1.Results[0][0];
RegExpStr1 := LiteDB1.Results[0][2];
RegExpEnd1 := LiteDB1.Results[0][3];
LiteDB1.Close;
Sock:=TTCPBlockSocket.create;
with sock do
begin
CreateSocket;
setLinger(true,10);
bind(SysBind1,SysPort1);
listen;
repeat
if canread(1000) then
begin
ClientSock:=accept;
if lastError=0 then TTCPEchoThrd.create(ClientSock);
end;
until false;
end;
// end;
end.
program datacollex;
{$mode objfpc}{$H+}
uses
cthreads,
Classes
{ add your units here },SysUtils, main;
begin
end.
LiteDB1 := TliteDB.Create(nil, '/var/lib/vtlogger/collex.sdb3');
try
with LiteDB1 do begin
LiteDB1.Query('SELECT * from sys_col where col_active = 1');
sysType1 := LiteDB1.Results[0][1];
SiteID1 := LiteDB1.Results[0][3];
SysPort1 := LiteDB1.Results[0][4];
SysBind1 := LiteDB1.Results[0][5];
dtimeout1 := LiteDB1.Results[0][11];
LiteDB1.Query('SELECT * from sys_par where sys_id = '+sysType1);
PhoneSysID1 := LiteDB1.Results[0][0];
RegExpStr1 := LiteDB1.Results[0][2];
RegExpEnd1 := LiteDB1.Results[0][3];
LiteDB1.Close;
end;
finally
LiteDB1.free;
end;
Sock:=TTCPBlockSocket.create;
try
with sock do
begin
CreateSocket;
setLinger(true,10);
bind(SysBind1,SysPort1);
listen;
repeat
if canread(1000) then
begin
ClientSock:=accept;
if lastError=0 then TTCPEchoThrd.create(ClientSock);
end;
until false;
end;
finally
sock.free;
end;
unit main;
{$mode objfpc}{$H+}
interface
uses
cmem,cthreads,Classes, SysUtils, passqlite, BlckSock, synsock, oxounit, BaseUnix;
Function CallConv (S1: String): String;
var
RegExpStr1,RegExpEnd1,dtimeout1,SysPort1SiteID1;
type
TTCPEchoDaemon = class(TThread)
private
Sock:TTCPBlockSocket;
public
Constructor Create;
Destructor Destroy; override;
procedure Execute; override;
end;
type
TTCPEchoThrd = class(TThread)
private
Sock:TTCPBlockSocket;
CSock: TSocket;
public
Constructor Create (hsock:tSocket);
procedure Execute; override;
end;
tmyconverterfunc=function(AData:String):String;
implementation
var
myconverterfunc:tmyconverterfunc;
Constructor TTCPEchoDaemon.Create;
begin
inherited create(false);
sock:=TTCPBlockSocket.create;
FreeOnTerminate:=true;
end;
Destructor TTCPEchoDaemon.Destroy;
begin
Sock.free;
end;
Constructor TTCPEchoThrd.Create(Hsock:TSocket);
begin
Csock := Hsock;
FreeOnTerminate:=True;
inherited create(false);
end;
procedure TTCPEchoThrd.Execute;
begin
sock:=TTCPBlockSocket.create;
FreeOnTerminate := True;
try
Sock.socket:=CSock;
sock.GetSins;
with sock do
begin
repeat
if terminated then break;
S := RecvString(strToInt(dtimeout1));
if lastError<>0 then break;
myconverterfunc:=@CallConv;
myconverterfunc(RegExpStr1,S,SiteID1);
if lastError<>0 then break;
until false;
end;
finally
Sock.Free;
end;
end;
Function CallConv (RegExpStr,S1,SiteID: String): String;
begin
oxoparse1.PbxGet(RegExpStr,S1,SiteID);
end;
procedure TTCPEchoDaemon.Execute;
var
LiteDB2 : Tlitedb;
ClientSock:TSocket;
PhoneSysID1,SysPort1,SysBind1,SysType1 :String;
pid : pid_t;
secs : longint;
begin
{ daemonize }
pid := fpFork;
Case pid of
0 : Begin { we are in the child }
Close(input); { close standard in }
Close(output); { close standard out }
Assign(output,'/dev/null');
ReWrite(output);
Close(stderr); { close standard error }
Assign(stderr,'/dev/null');
ReWrite(stderr);
End;
-1 : secs := 0; { forking error, so run as non-daemon }
Else Halt; { successful fork, so parent dies }
End;
{****************************
Get DB Settings
******************************}
LiteDB2 := TliteDB.Create(nil, '/var/lib/vtlogger/collex.sdb3');
try
with LiteDB2 do
begin
LiteDB2.Query('SELECT * from sys_col where col_active = 1');
sysType1 := LiteDB1.Results[0][1];
SiteID1 := LiteDB1.Results[0][3]; //global var
SysPort1 := LiteDB1.Results[0][4];
SysBind1 := LiteDB1.Results[0][5];
dtimeout1 := LiteDB1.Results[0][11]; // global var
LiteDB2.Query('SELECT * from sys_par where sys_id = '+sysType1);
PhoneSysID1 := LiteDB1.Results[0][0];
RegExpStr1 := LiteDB1.Results[0][2]; //glocal var
RegExpEnd1 := LiteDB1.Results[0][3]; //global var
LiteDB1.Close;
end;
finally
LiteDB2.Destroy;
end;
with sock do
begin
CreateSocket;
setLinger(true,10);
bind(SysBind1,SysPort1);
listen;
repeat
if terminated then break;
if canread(1000) then
begin
ClientSock:=accept;
if lastError=0 then TTCPEchoThrd.create(ClientSock);
end;
until false;
end;
end;
end.
unit main;
{$mode objfpc}{$H+}
interface
uses
cmem,cthreads,Classes, SysUtils, passqlite, BlckSock, synsock, oxounit, BaseUnix;
Function CallConv (S1: String): String;
var
RegExpStr1,RegExpEnd1,dtimeout1,SysPort1, SiteID1 : String;
type
TTCPEchoDaemon = class(TThread)
private
Sock:TTCPBlockSocket;
public
Constructor Create;
Destructor Destroy; override;
procedure Execute; override;
end;
type
TTCPEchoThrd = class(TThread)
private
Sock:TTCPBlockSocket;
CSock: TSocket;
S:String;
public
Constructor Create (hsock:tSocket);
procedure Execute; override;
end;
tmyconverterfunc=function(AData:String):String;
implementation
var
myconverterfunc:tmyconverterfunc;
Constructor TTCPEchoDaemon.Create;
begin
inherited create(false);
sock:=TTCPBlockSocket.create;
FreeOnTerminate:=true;
end;
Destructor TTCPEchoDaemon.Destroy;
begin
Sock.free;
end;
Constructor TTCPEchoThrd.Create(Hsock:TSocket);
begin
Csock := Hsock;
FreeOnTerminate:=True;
inherited create(false);
end;
procedure TTCPEchoThrd.Execute;
begin
sock:=TTCPBlockSocket.create;
FreeOnTerminate := True;
try
Sock.socket:=CSock;
sock.GetSins;
with sock do
begin
repeat
if terminated then break;
S := RecvString(strToInt(dtimeout1));
if lastError<>0 then break;
myconverterfunc:=@CallConv;
myconverterfunc(S);
if lastError<>0 then break;
until false;
end;
finally
Sock.Free;
end;
end;
Function CallConv (S1: String): String;
begin
oxoparse1.PbxGet(RegExpStr1,S1,SiteID1);
end;
procedure TTCPEchoDaemon.Execute;
var
LiteDB2 : Tlitedb;
ClientSock:TSocket;
PhoneSysID1,SysPort1,SysBind1,SysType1 :String;
pid : pid_t;
secs : longint;
begin
{ daemonize }
pid := fpFork;
Case pid of
0 : Begin { we are in the child }
Close(input); { close standard in }
Close(output); { close standard out }
Assign(output,'/dev/null');
ReWrite(output);
Close(stderr); { close standard error }
Assign(stderr,'/dev/null');
ReWrite(stderr);
End;
-1 : secs := 0; { forking error, so run as non-daemon }
Else Halt; { successful fork, so parent dies }
End;
{****************************
Get DB Settings
******************************}
LiteDB2 := TliteDB.Create(nil, '/var/lib/vtlogger/collex.sdb3');
try
with LiteDB2 do
begin
LiteDB2.Query('SELECT * from sys_col where col_active = 1');
sysType1 := LiteDB2.Results[0][1];
SiteID1 := LiteDB2.Results[0][3]; //global var for
SysPort1 := LiteDB2.Results[0][4];
SysBind1 := LiteDB2.Results[0][5];
dtimeout1 := LiteDB2.Results[0][11]; // global var
LiteDB2.Query('SELECT * from sys_par where sys_id = '+sysType1);
PhoneSysID1 := LiteDB2.Results[0][0];
RegExpStr1 := LiteDB2.Results[0][2]; //glocal var
RegExpEnd1 := LiteDB2.Results[0][3]; //global var
LiteDB2.Close;
end;
finally
LiteDB2.Destroy;
end;
with sock do
begin
CreateSocket;
setLinger(true,10);
bind(SysBind1,SysPort1);
listen;
repeat
if terminated then break;
if canread(1000) then
begin
ClientSock:=accept;
if lastError=0 then TTCPEchoThrd.create(ClientSock);
end;
until false;
end;
end;
end.
LiteDB1 := TliteDB.Create(nil, '/var/lib/vtlogger/collex.
Ā
but no
FreeAndNil(LiteDbl);
also
Sock:=TTCPBlockSocket.crea
Ā
but no
FreeAndNil(Sock);