IN: rpc-example REQUIRES: contrib/http-client contrib/calendar ; USING: kernel hashtables xml-rpc xml calendar sequences arrays math httpd io http-client namespaces ; : functions H{ { "add" [ + ] } { "subtract" [ - ] } { "multiply" [ * ] } { "divide" [ / ] } } ; : apply-function ( name args -- {number} ) [ functions hash ] dip first2 rot call 1array ; : problem>solution ( xml-doc -- xml-doc ) receive-rpc dup rpc-method-name swap rpc-method-params apply-function send-rpc ; : respond-rpc-arith ( -- ) "raw-response" get string>xml problem>solution xml>string put-http-response ; : test-rpc-arith "add" { 1 2 } send-rpc "http://localhost:8080/responder/rpc/" http-post ;