mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 16:25:54 +01:00
70c1e55e94
New Unit Tests for Compression in TRESTClient Updated RQL Parser and compilers New EntitiesGenerator (alpha) Improved unittests Updated landing page
113 lines
3.0 KiB
ObjectPascal
113 lines
3.0 KiB
ObjectPascal
program jsonrpcserver;
|
|
|
|
{$APPTYPE CONSOLE}
|
|
|
|
uses
|
|
System.SysUtils,
|
|
MVCFramework.Logger,
|
|
MVCFramework.Commons,
|
|
MVCFramework.REPLCommandsHandlerU,
|
|
Web.ReqMulti,
|
|
Web.WebReq,
|
|
Web.WebBroker,
|
|
IdHTTPWebBrokerBridge,
|
|
MainControllerU in 'MainControllerU.pas',
|
|
MainWebModuleU in 'MainWebModuleU.pas' {MyWebModule: TWebModule},
|
|
MVCFramework.JSONRPC in '..\..\sources\MVCFramework.JSONRPC.pas',
|
|
BusinessObjectsU in '..\commons\BusinessObjectsU.pas',
|
|
RandomUtilsU in '..\commons\RandomUtilsU.pas';
|
|
|
|
{$R *.res}
|
|
|
|
procedure RunServer(APort: Integer);
|
|
var
|
|
lServer: TIdHTTPWebBrokerBridge;
|
|
lCustomHandler: TMVCCustomREPLCommandsHandler;
|
|
lCmd: string;
|
|
begin
|
|
Writeln('** DMVCFramework Server ** build ' + DMVCFRAMEWORK_VERSION);
|
|
if ParamCount >= 1 then
|
|
lCmd := ParamStr(1)
|
|
else
|
|
lCmd := 'start';
|
|
|
|
lCustomHandler := function(const Value: String; const Server: TIdHTTPWebBrokerBridge; out Handled: Boolean): THandleCommandResult
|
|
begin
|
|
Handled := False;
|
|
Result := THandleCommandResult.Unknown;
|
|
|
|
// Write here your custom command for the REPL using the following form...
|
|
// ***
|
|
// Handled := False;
|
|
// if (Value = 'apiversion') then
|
|
// begin
|
|
// REPLEmit('Print my API version number');
|
|
// Result := THandleCommandResult.Continue;
|
|
// Handled := True;
|
|
// end
|
|
// else if (Value = 'datetime') then
|
|
// begin
|
|
// REPLEmit(DateTimeToStr(Now));
|
|
// Result := THandleCommandResult.Continue;
|
|
// Handled := True;
|
|
// end;
|
|
end;
|
|
|
|
LServer := TIdHTTPWebBrokerBridge.Create(nil);
|
|
try
|
|
LServer.DefaultPort := APort;
|
|
|
|
{ more info about MaxConnections
|
|
http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdCustomTCPServer_MaxConnections.html }
|
|
LServer.MaxConnections := 0;
|
|
|
|
{ more info about ListenQueue
|
|
http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdCustomTCPServer_ListenQueue.html }
|
|
LServer.ListenQueue := 200;
|
|
|
|
WriteLn('Write "quit" or "exit" to shutdown the server');
|
|
repeat
|
|
if lCmd.IsEmpty then
|
|
begin
|
|
Write('-> ');
|
|
ReadLn(lCmd)
|
|
end;
|
|
try
|
|
case HandleCommand(lCmd.ToLower, LServer, lCustomHandler) of
|
|
THandleCommandResult.Continue:
|
|
begin
|
|
Continue;
|
|
end;
|
|
THandleCommandResult.Break:
|
|
begin
|
|
Break;
|
|
end;
|
|
THandleCommandResult.Unknown:
|
|
begin
|
|
REPLEmit('Unknown command: ' + lCmd);
|
|
end;
|
|
end;
|
|
finally
|
|
lCmd := '';
|
|
end;
|
|
until false;
|
|
|
|
finally
|
|
LServer.Free;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
ReportMemoryLeaksOnShutdown := True;
|
|
IsMultiThread := True;
|
|
try
|
|
if WebRequestHandler <> nil then
|
|
WebRequestHandler.WebModuleClass := WebModuleClass;
|
|
WebRequestHandlerProc.MaxConnections := 1024;
|
|
RunServer(8080);
|
|
except
|
|
on E: Exception do
|
|
Writeln(E.ClassName, ': ', E.Message);
|
|
end;
|
|
end.
|