Changes between Version 19 and Version 20 of GuiRpcProtocol
- Timestamp:
- Sep 9, 2008, 9:08:24 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GuiRpcProtocol
v19 v20 2 2 = GUI RPC protocol = 3 3 4 BOINC uses the GUI RPC protocol to make the BOINC Manager communicate with the core client. 4 The GUI RPC protocol lets GUIs like the BOINC Manager communicate with the core client. 5 5 6 6 Note that the RPC '''server''' is the core client, and the RPC '''client''' is a GUI or add-on communicating with it (such as BOINC Manager). This may seem confusing. This terminology will be used on the rest of the page. … … 8 8 == Basic structure == 9 9 10 The protocol is based on XML, and it's strictly request-reply. The client sends requests to the server, and waits for a reply; the server never sends a replywithout getting a request from the client first. Both requests and replies are terminated with the control character `0x03`.10 The protocol is based on XML, and it's strictly request-reply. The client sends requests to the server, and waits for a reply; the server never sends anything without getting a request from the client first. Both requests and replies are terminated with the control character `0x03`. 11 11 12 Requests are inside `<boinc_gui_rpc_request>` elements, and replies from the RPC server are inside `<boinc_gui_rpc_reply>` elements (in both cases there is a `0x03` byte after the closing tag). The current core clientdoesn't require the `<boinc_gui_rpc_request>` tag, which is handy for debugging (you can connect via [http://netcat.sourceforge.net/ netcat] and just type `<auth1/>`); however,12 Requests are inside `<boinc_gui_rpc_request>` elements, and replies from the RPC server are inside `<boinc_gui_rpc_reply>` elements (in both cases there is a `0x03` byte after the closing tag). The current RPC server implementation doesn't require the `<boinc_gui_rpc_request>` tag, which is handy for debugging (you can connect via [http://netcat.sourceforge.net/ netcat] and just type `<auth1/>`); however, 13 13 >> clients must not rely on this, and must always send the __`<boinc_gui_rpc_request>`__ root tag. 14 14 >Ought this to be read as "''must always send the __`<boinc_gui_rpc_reply>`__ root tag''"? 15 15 Nope. I'm talking of RPC clients (which make __requests__), such as BOINCView or the official manager. See second paragraph of this page :) 16 16 17 The current official core client (RPC server)doesn't support pipelining of requests (pipelining means sending a batch of multiple requests without waiting for a reply, then getting all the replies together; this improves latency). For compatibility, pipelining must not be used.17 The current RPC server doesn't support pipelining of requests (pipelining means sending a batch of multiple requests without waiting for a reply, then getting all the replies together; this improves latency). For compatibility, pipelining must not be used. 18 18 19 19 To terminate the RPC session, just close the connection on the client side. Warning: some protocols have a specific "quit" command for this. The GUI RPC protocol has a {{{<quit/>}}} command, but it has a completely different purpose: telling the core client to quit!