Nick Mathewson
6bdfc5740f
arti-rpcserver: Be careful about saying "result".
...
Even though json-rpc uses "result" to mean "a successful return value
from a method", we can't: Rust's `Result` type is so pervasive
that confusion would be inevitable.
2023-04-12 12:08:53 -04:00
Nick Mathewson
4d82bf4b98
arti-rpcserver: Rename Authentication{Method => Scheme}.
2023-04-12 11:53:50 -04:00
Nick Mathewson
4327276922
arti-rpcserver: rename cmd to method.
2023-04-12 11:51:48 -04:00
Nick Mathewson
b2b0a0dd83
arti-rpcserver: rename command to method.
2023-04-12 11:51:37 -04:00
Nick Mathewson
c5b70224b2
tor-rpcbase: Rename and rephrase "command" to "method"
2023-04-12 11:25:03 -04:00
Nick Mathewson
9a5f319a84
Rename tor-rpccmd to tor-rpcbase.
2023-04-12 07:34:57 -04:00
Nick Mathewson
5979272cc4
rpc: Make AuthenticationMethod an enum.
2023-04-12 07:34:57 -04:00
Nick Mathewson
0eb15ae592
rpc: Reify and expose DispatchTable.
2023-04-12 07:34:57 -04:00
Nick Mathewson
a02a200ccd
rpc: Use Pin<Box<Stream/Sink>> for run_loop
2023-04-12 07:34:57 -04:00
Nick Mathewson
3ad5d2f6ea
rpc: Import Pin/Context/Poll.
...
(Except for one case where we are using crate::Context and
task::Context at the same time.)
2023-04-12 07:34:57 -04:00
Nick Mathewson
8845309125
rpc: Document our intended read-blocking behavior.
2023-04-12 07:34:57 -04:00
Nick Mathewson
ed1cbce13a
rpc: Switch JsonLinesEncoder to have Default, not new.
2023-04-12 07:34:57 -04:00
Nick Mathewson
03937e35b2
rpc: Rename BoxedResponseBody => ResponseBody
2023-04-12 07:34:57 -04:00
Nick Mathewson
07bb57a4c2
rpc: Remove anyhow dependency
2023-04-12 07:34:57 -04:00
Nick Mathewson
ff68a5f02a
rpc: Add standard warnings to arti-rpcserver
2023-04-12 07:34:57 -04:00
Nick Mathewson
b024fe5596
rpc: Add an authentication step.
...
Per our design, every connection starts out unauthenticated, and
needs one authenticate command to become authenticated.
Right now the only authentication type is "This is a unix named
socket where everybody who can connect has permission."
2023-04-12 07:34:57 -04:00
Nick Mathewson
f9de7929c1
RPC: add a temporary "listen" function.
...
It requires tokio, it's unix-only, and makes some unfortunate
shortcuts. Probably good enough for initial testing.
2023-04-12 07:34:57 -04:00
Nick Mathewson
3e64cab62d
rpc: Declare a trivial Echo command that works on a session.
2023-04-12 07:34:57 -04:00
Nick Mathewson
41cba18899
rpc: Wire up arti-rpcserver to use tor-rpccmd.
2023-04-12 07:34:57 -04:00
Nick Mathewson
3fbcead7dc
rpc: do a better job of hiding impl_const_type_id!
2023-04-12 07:34:57 -04:00
Nick Mathewson
e26d9452dc
RPC: Initial implementation of a multiple-argument dispatch
...
This code uses some kludges (discussed with Ian previously and
hopefully well documented here) to get a type-identifier for each
type in a const context. It then defines a macro to declare a
type-erased versions of a concrete implementation functions, and
register those implementations to be called later.
We will probably want to tweak a bunch of this code as we move ahead.
2023-04-12 07:34:57 -04:00
Nick Mathewson
a4660a4e09
Start on a lower-level tor-rpccmd crate.
...
This crate will hold the backend pieces of RPC interaction that
different parts of Arti get to implement.
2023-04-12 07:34:57 -04:00
Nick Mathewson
6e3f3b4dfc
rpc: Add a Session object and an interaction loop.
2023-04-12 07:34:57 -04:00
Nick Mathewson
5247486cfc
rpc: Add asynchronous_codec wrapper for jsonlines.
2023-04-12 07:34:57 -04:00
Nick Mathewson
a662fb1296
rpc: Add a cancellable future type.
...
Ordinarily you can cancel a future just by dropping it, but we'll
want the ability to cancel futures that we no longer own (because we
gave them to a `FuturesUnordered`).
2023-04-12 07:34:57 -04:00
Nick Mathewson
0779d405cf
rpc: Implement json message types for serde.
2023-04-12 07:34:57 -04:00