summaryrefslogtreecommitdiff
path: root/crates/arti-rpcserver/src
Commit message (Collapse)AuthorAgeFilesLines
* Mark a struct as allowed-to-be-unused.Nick Mathewson2024-07-281-0/+1
| | | | | (This will either become used later, or we will remove it; the TODO RPC will remind us.)
* rpc: Rename the error codes for something like consistency.Nick Mathewson2024-07-253-4/+4
|
* rpc: Remove RpcError data field and use ReportNick Mathewson2024-07-251-1/+1
| | | | | | | | | | | | Per discussion, this field isn't really specified in a way that lets us fill it sensibly at the moment. So for now, we're going to just omit it. Additionally, we said that we'd Report on our errors; this branch changes the implementation of RpcError to do that. Question: Will the blanket implementation for Into<RpcError> make it harder to re-add a Data field later on if we want to do so?
* rpc: Refactor errors part 1: a new RpcMethod trait.Nick Mathewson2024-07-254-14/+7
| | | | | It is no longer necessary to say, for every RPC method, that its error type is RpcError.
* Several typo fixes from GabiNick Mathewson2024-06-111-2/+1
|
* Un-indent a block.Nick Mathewson2024-06-111-42/+39
|
* RPC: Use RPC methods instead of the "ClientConnectionTarget" trait.Nick Mathewson2024-06-112-91/+113
| | | | | | | | | | | | On its own, this might not seem like a huge improvement, but it will later let us implement these RPC methods for types that can't reasonably implement ClientConnectionTarget. It also serves as a proof of concept that special-method invocation can actually work, so that we can build things like this in cases where introducing a trait isn't practical. Closes #1427
* rpc: Make RpcMgr::lookup_object return context along with object.Nick Mathewson2024-06-101-6/+12
| | | | The context will make it possible to invoke rpc methods.
* Implement rpc::Context on Connection directlyNick Mathewson2024-06-101-25/+7
| | | | | | | | | | | This lets us get rid of a now-spurious `RequestContext` wrapper type and an extra layer of indirection; it will also make it easier to treat a Connection _as_ a context, so that we can have a context in the socks-rpc interface code. This patch removes a TODO about "treading carefully" when we make this change. When I added that TODO, I had misremembered some implementation details of the RPC object system.
* rpc: allow Connection::lookup_object to take &selfNick Mathewson2024-06-101-7/+16
| | | | This will allow us to implement rpc::Context on Connection directly.
* rpc: Make the connection type always-Arc.Nick Mathewson2024-06-102-5/+5
|
* Use refactored invoke_rpc_method in rpcserver.Nick Mathewson2024-06-101-6/+1
|
* rpc: Pass around our rpc::Context in an Arc.Nick Mathewson2024-06-104-9/+11
| | | | | | | | Formerly we used a Box. That was okay at first, but now that we want RPC methods to be able to invoke other RPC methods, we don't want the Invocable methods to have to consume the Context. This requires that Context become Sync.
* RPC: Expose dispatch table from ContextNick Mathewson2024-05-161-0/+4
| | | | | We need to do this so that we can actually invoke RPC functions from one another.
* RPC: Require an Error type in methods.Nick Mathewson2024-05-164-0/+7
| | | | | | | | This is needed so that we can cast special methods' return types properly. I wish I could make this optional, but Rust doesn't allow defaulting an associated type.
* rpc: Move typetag onto subtrait of DynMethodNick Mathewson2024-05-162-7/+8
| | | | | | This will allow us to create dispatchable methods that are only invoked from inside the arti code, and are not themselves serializable.
* RPC: Give error from RpcMgr::new if method name is sufficiently bad.Nick Mathewson2024-05-141-4/+22
| | | | | (We don't give an error about unrecognized namespaces (for now), since we have no way to opt in to them.)
* RPC: Enforce method name format.Nick Mathewson2024-05-141-0/+6
| | | | | | | | | | | | We need to do this carefully, since we want our system to be extensible with new namespaces. First, when we are constructing an RpcMgr, we _warn_ about any method names that are misformed. Second, we add a test in the `arti` crate to fail if any method names are invalid. This will only catch method names in crates that `arti` depends on.
* RPC: Use RPC method names in a consistent format.Nick Mathewson2024-05-142-3/+3
| | | | | Specifically, we want a single colon, and we want our method names to be in snake_case.
* RPC: Require DynClone for ClientConnectionError.Nick Mathewson2024-05-141-1/+1
|
* RPC: Document RpcDataSTream state transitions.Nick Mathewson2024-05-141-1/+19
|
* RPC: Rename RpcDataStream::{Waiting => Launching}Nick Mathewson2024-05-141-5/+9
| | | | Also, improve documentation.
* RPC: RpcDataStream type to act as a "stream-shaped hole"Nick Mathewson2024-05-142-0/+228
| | | | | | | | | The application creates these, using a new-stream-handle RPC command, on an object that can actually create streams. Then later, the application provides the (global) identity of one of these objects when it's making a SOCKS connection. This causes the object to take hold of a `DataStreamCtrl`.
* RPC: Add a trait that can be the target of SOCKS requestsNick Mathewson2024-05-121-6/+55
| | | | | | | | | | | | (These will later become objects that can receive any application request, once we have HTTP connect.) For now, Session and TorClient implement this trait; but soon there will be a new type to hold on to the created DataStreamCtrl. There are some XXXXs here, marking code that is too ugly to live. I should fix it before I merge this branch.
* RPC: Un-parameterize RpcSession.Nick Mathewson2024-05-091-29/+43
| | | | | | | Instead, add a trait so that we can hold TorClient<R> and invoke only the methods on it that we need. This is a partial revert of 47f012829d3381fd896c6b6f20961fbfe2f40f6d.
* rpcserver: rename streams.rs to codecs.rs.Nick Mathewson2024-05-093-2/+2
| | | | I think I'm going to add another stream management module here.
* rpc: Teach RpcSession to expose and isolate clients.Nick Mathewson2024-05-091-1/+39
|
* Make RpcSession parameterized.Nick Mathewson2024-05-092-22/+22
| | | | | | This change allows it to hold a TorClient<R> that isn't type-erased. We'll use this for cases when we need to get the client directly and call functions on it.
* Merge branch 'new_ci_cfg_strategy' into 'main'Nick Mathewson2024-05-071-2/+2
|\ | | | | | | | | | | | | add_warning/CI: New strategy to avoid "unexpected-cfgs" warning Closes #1395 See merge request tpo/core/arti!2129
| * Re-run maint/add_warning.Nick Mathewson2024-05-061-2/+2
| | | | | | | | This commit is automatically generated.
* | TorClient: Slightly cleaner (?) interface for registering RPC methods.Nick Mathewson2024-05-061-0/+19
| |
* | RPC: Implement methods to get and watch client bootstrap status.Nick Mathewson2024-05-062-3/+11
|/
* Add a dead code allow in RPC codeIan Jackson2024-04-251-0/+1
|
* RPC: Remove method and object type from macros.Nick Mathewson2024-04-222-4/+4
| | | | | These are no longer needed, since they are inferred from the types of the functions.
* rpc: Move deftly attributes into an `rpc` namespace.Nick Mathewson2024-04-113-6/+6
|
* Globally rename rpc_invoke_fn to static_rpc_invoke_fnNick Mathewson2024-04-082-5/+5
| | | | | | | | This will be called _static_ to make it clear that it registers the method statically, so you don't need to install it at runtime. After a bit more work, there will be a separate macro that declares an installer function.
* Refactor: remove existence of HasConstTypeId_ as a traitNick Mathewson2024-04-084-7/+7
| | | | | | | | | We don't actually need this to be a trait; we just need methods and objects to have a `CONST_TYPE_ID_` if they want to participate in the inventory-based method registry. Removing this trait makes it much simpler to declare methods and objects.
* Port many of the macros in tor-rpcbase to use derive-deftly.Nick Mathewson2024-04-045-17/+36
| | | | | | This simplifies our implementation logic in a few places, and simplifies our invocation syntax greatly. There are a few infelicities, noted in `TODO RPC` comments.
* Run maint/add_warning.Nick Mathewson2024-03-135-0/+5
|
* deny clippy::unchecked_duration_subtractiontrinity-1686a2024-02-291-0/+1
|
* clippy: Use Result::cloned in several placesIan Jackson2024-01-311-1/+1
|
* arti-rpcserver: Add an allowIan Jackson2024-01-311-0/+1
|
* Upgrade to latest asynchronous_codec (0.7.0)Nick Mathewson2023-10-171-2/+2
|
* oneshot: Use veneer in arti-rpcserverIan Jackson2023-10-111-1/+2
|
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-235-0/+5
|
* Run add_warnings on all files.Nick Mathewson2023-08-041-2/+2
|
* Fix typosDimitris Apostolou2023-07-222-2/+2
|
* Run maint/add_warning to actually apply new lint allowsIan Jackson2023-07-106-0/+6
|
* Remove explicit allows for missing_panics_docs.Nick Mathewson2023-07-061-1/+0
| | | | These are no longer needed.
* Run add_warning to remove `missing_panics_doc` deny.Nick Mathewson2023-07-061-1/+0
| | | | Closes #950.