summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/fcl-net/examples/svrclass_xmlrpc.pp
blob: a34b047faa9c18844381b65b6f8b7899db628117 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
unit svrclass_XMLRPC;

interface

uses Classes, XMLRPC, svrclass;

type
  TServerClassXMLRPCServlet = class(TXMLRPCServlet)
  private
    FServerClass: TServerClass;
  protected
    procedure Dispatch(AParser: TXMLRPCParser; AWriter: TXMLRPCWriter; APath: TStrings); override;
  published
    property ServerClass: TServerClass read FServerClass write FServerClass;
  end;



implementation

procedure TServerClassXMLRPCServlet.Dispatch(AParser: TXMLRPCParser; AWriter: TXMLRPCWriter; APath: TStrings);
var
  s: String;
begin
  s := APath[0];
  if s = 'WRITESTRING' then
  begin
    AParser.ResetValueCursor;
    ServerClass.WriteString(AParser.GetPrevString);
    AWriter.WriteResponse(nil);
  end else if s = 'ADD' then
  begin
    AParser.ResetValueCursor;
    AWriter.WriteResponse(AWriter.CreateIntValue(ServerClass.Add(AParser.GetPrevInt, AParser.GetPrevInt)));
  end else
    AWriter.WriteFaultResponse(2, 'Invalid method name');
end;


end.