rpc: handle XML-RPC with JSON-RPC logics #65
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This allows us to centralize on a single set of RPC logics, sharing the exception handling, error codes/messages and behaviors.
This improves consistency, reduces maintenance burden, makes future extension to RPC parts easier. In addition, we can ditch the dependency on decade-old xmlrpc-c library.
As for the performance, we performed a test with 10,000 torrents in a typical d.multicall2 call, which showed JSON-RPC is 3x faster, compared to XML-RPC (xmlrpc-c). Meanwhile, rapidxml is 3-9x faster, compared to expat/libxml. That means even with the conversion, we shouldn't see much of a performance ding. We may even have a win.