• Niklas Adolfsson's avatar
    [client] batch requests (#216) · b8bd715d
    Niklas Adolfsson authored
    
    
    * feat(http client): batch requests
    
    * fix(http batch request): request in any order.
    
    * Update src/types/jsonrpc/id.rs
    
    * tests(batch out-of-order): make it less confusing.
    
    * fix nit: `cloned` -> `copied`
    
    * fix bad merge
    
    * [client]: batch request generic response
    
    * wait with impl
    
    * [ws client]: add template for batch requests
    
    * remove jsonvalue
    
    * naive impl
    
    * fix make it work,
    
    The implemenation is quite inefficient because the responses might be unordered.
    Currently, a "digest" of a BTreeSet is stored to sort the requestIDs
    and don't have to try all combinations of requestIDs in the response.
    
    * fix nits
    
    * error handling
    
    * fix nits
    
    * more nits
    
    * use error msg pattern
    
    * add batch requests to client trait
    
    Keep it simple by require `Vec<(Method, Params)>` could be improved.
    
    * address review comments: use swap_remove
    
    Replace read values with `Vec::swap_remove` instead inserting dummy value.
    The reason is that `Vec::remove` is O(n)
    
    * address review grumbles: batch trait bound Default
    
    * don't be clever
    
    * [http client]: faster lookup for batch request.
    
    * fix: distguish request_id and batch_id
    
    * thanks clippy
    
    * fix: clarify bad response with a separate error
    
    * fix tests
    
    * add issue link to todo
    
    * Update types/src/error.rs
    
    Co-authored-by: default avatarDavid <[email protected]>
    
    Co-authored-by: default avatarDavid <[email protected]>
    b8bd715d