56 lines
1.3 KiB
ObjectPascal
56 lines
1.3 KiB
ObjectPascal
program Project06Server;
|
|
|
|
{$APPTYPE CONSOLE}
|
|
|
|
uses
|
|
{$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads
|
|
SynCommons,
|
|
mORMot,
|
|
SysUtils;
|
|
|
|
type
|
|
// TSQLRestServerFullMemory kind of server is light and enough for our purpose
|
|
TServiceServer = class(TSQLRestServerFullMemory)
|
|
published
|
|
procedure Sum(Ctxt: TSQLRestServerURIContext);
|
|
end;
|
|
|
|
|
|
{ TServiceServer }
|
|
|
|
procedure TServiceServer.Sum(Ctxt: TSQLRestServerURIContext);
|
|
// begin // the following would be faster to write, a bit slower to execute:
|
|
// Ctxt.Results([Ctxt['a']+Ctxt['b']]);
|
|
// end;
|
|
var a,b: double;
|
|
begin
|
|
if UrlDecodeNeedParameters(Ctxt.Parameters,'A,B') then begin
|
|
while Ctxt.Parameters<>nil do begin
|
|
UrlDecodeDouble(Ctxt.Parameters,'A=',a);
|
|
UrlDecodeDouble(Ctxt.Parameters,'B=',b,@Ctxt.Parameters);
|
|
end;
|
|
Ctxt.Results([a+b]);
|
|
end else
|
|
Ctxt.Error('Missing Parameter');
|
|
end;
|
|
|
|
var
|
|
aModel: TSQLModel;
|
|
begin
|
|
aModel := TSQLModel.Create([],'service');
|
|
try
|
|
with TServiceServer.Create(aModel) do
|
|
try
|
|
if ExportServerNamedPipe('RestService') then
|
|
writeln('Background server is running.'#10) else
|
|
writeln('Error launching the server'#10);
|
|
write('Press [Enter] to close the server.');
|
|
readln;
|
|
finally
|
|
Free;
|
|
end;
|
|
finally
|
|
aModel.Free;
|
|
end;
|
|
end.
|