svrclass_xmlrpc.pp 949 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. unit svrclass_XMLRPC;
  2. interface
  3. uses Classes, XMLRPC, svrclass;
  4. type
  5. TServerClassXMLRPCServlet = class(TXMLRPCServlet)
  6. private
  7. FServerClass: TServerClass;
  8. protected
  9. procedure Dispatch(AParser: TXMLRPCParser; AWriter: TXMLRPCWriter; APath: TStrings); override;
  10. published
  11. property ServerClass: TServerClass read FServerClass write FServerClass;
  12. end;
  13. implementation
  14. procedure TServerClassXMLRPCServlet.Dispatch(AParser: TXMLRPCParser; AWriter: TXMLRPCWriter; APath: TStrings);
  15. var
  16. s: String;
  17. begin
  18. s := APath[0];
  19. if s = 'WRITESTRING' then
  20. begin
  21. AParser.ResetValueCursor;
  22. ServerClass.WriteString(AParser.GetPrevString);
  23. AWriter.WriteResponse(nil);
  24. end else if s = 'ADD' then
  25. begin
  26. AParser.ResetValueCursor;
  27. AWriter.WriteResponse(AWriter.CreateIntValue(ServerClass.Add(AParser.GetPrevInt, AParser.GetPrevInt)));
  28. end else
  29. AWriter.WriteFaultResponse(2, 'Invalid method name');
  30. end;
  31. end.