README.md in wamp_client-0.1.4 vs README.md in wamp_client-0.2.0

- old
+ new

@@ -4,14 +4,25 @@ [![Circle CI](https://circleci.com/gh/ericchapman/ruby_wamp_client/tree/master.svg?&style=shield&circle-token=92813c17f9c9510c4c644e41683e7ba2572e0b2a)](https://circleci.com/gh/ericchapman/ruby_wamp_client/tree/master) [![Codecov](https://img.shields.io/codecov/c/github/ericchapman/ruby_wamp_client/master.svg)](https://codecov.io/github/ericchapman/ruby_wamp_client) Client for talking to a WAMP Router. This is defined [here](https://tools.ietf.org/html/draft-oberstet-hybi-tavendo-wamp-02) -Please use [wamp_rails](https://github.com/ericchapman/ruby_wamp_rails) to integrate this GEM in to RAILS. +Note: [wamp_rails](https://github.com/ericchapman/ruby_wamp_rails) has been deprecated in favor of +[wamp-worker](https://github.com/ericchapman/ruby_wamp_worker) which allows this library to be run +in a RAILS worker. It will also allow integration with Sidekiq to support allowing handlers to +execute in the background. ## Revision History + - v0.2.0: + - Breaking changes to the API including + - Moving CallResult, CallError, CallDefer, and ProgressiveCallDefer to common module called "Response" + - Results to calls return a Hash object instead of a CallResult object + - Catches "StandardError" instead of "Exception" + - Session object has been split into *request* and *manager* objects + - Callback subscriptions are now all "on(event)" + - Lots of code cleanup and combining handling of methods - v0.1.4: - Wrapped defer logic inside of yield method for cleanliness - v0.1.3: - Improved logging - Minor code cleanup @@ -77,15 +88,11 @@ A connection can be created as follows ```ruby require 'wamp/client' -options = { - uri: 'ws://127.0.0.1:8080/ws', - realm: 'realm1', -} -connection = Wamp::Client::Connection.new(options) +connection = Wamp::Client::Connection.new(uri: 'ws://127.0.0.1:8080/ws', realm: 'realm1') connection.on(:join) do |session, details| puts "Session Open" # Register for something @@ -95,11 +102,11 @@ session.register('com.example.procedure', method(:add)) do |registration, error, details| # Call It session.call('com.example.procedure', [3,4]) do |result, error, details| if result - puts result.args[0] # => 7 + puts result[:args][0] # => 7 end end end @@ -161,17 +168,12 @@ method 'add_tick_loop' ```ruby require 'wamp/client' -options = { - uri: 'ws://127.0.0.1:8080/ws', - realm: 'realm1', -} +connection = Wamp::Client::Connection.new(uri: 'ws://127.0.0.1:8080/ws', realm: 'realm1') -connection = Wamp::Client::Connection.new(options) - connection.transport_class.add_tick_loop do # Do something periodic end ``` @@ -514,12 +516,12 @@ To call, do the following ```ruby session.call('com.example.procedure', [15], {param: value}, {}) do |result, error, details| # TODO: Do something - args = result.args - kwargs = result.kwargs + args = result[:args] + kwargs = result[:kwargs] end ``` Options are @@ -530,15 +532,15 @@ #### Errors Errors can either be raised OR returned as shown below ```ruby handler = lambda do |args, kwargs, details| - raise 'error' + raise RuntimeError,'error' # OR - raise Wamp::Client::CallError.new('wamp.error', ['some error'], {details: true}) + raise Wamp::Client::Response::CallError.new('wamp.error', ['some error'], {details: true}) # OR - Wamp::Client::CallError.new('wamp.error', ['some error'], {details: true}) + Wamp::Client::Response::CallError.new('wamp.error', ['some error'], {details: true}) end session.register('com.example.procedure', handler) ``` All 3 of the above examples will return a WAMP Error @@ -547,11 +549,11 @@ A deferred call refers to a call where the response needs to be asynchronously fetched before it can be returned to the caller. This is shown below ```ruby def add(args, kwargs, details) - defer = Wamp::Client::Defer::CallDefer.new + defer = Wamp::Client::Response::CallDefer.new EM.add_timer(2) { # Something Async defer.succeed(args[0]+args[1]) } defer end @@ -560,13 +562,13 @@ Errors are returned as follows ```ruby def add(args, kwargs, details) - defer = Wamp::Client::Defer::CallDefer.new + defer = Wamp::Client::Response::CallDefer.new EM.add_timer(2) { # Something Async - defer.fail(Wamp::Client::CallError.new('test.error')) + defer.fail(Wamp::Client::Response::CallError.new('test.error')) } defer end session.register('com.example.procedure', method(:add)) ``` @@ -577,30 +579,30 @@ **Caller** ```ruby results = [] session.call('com.example.procedure', [], {}, {receive_progress: true}) do |result, error, details| - results = results + result.args + results = results + result[:args] unless details[:progress] puts results # => [1,2,3,4,5,6] end end ``` **Callee** ```ruby def add(args, kwargs, details) - defer = Wamp::Client::Defer::ProgressiveCallDefer.new + defer = Wamp::Client::Response::ProgressiveCallDefer.new EM.add_timer(2) { # Something Async - defer.progress(Wamp::Client::CallResult.new([1,2,3])) + defer.progress(Wamp::Client::Response::CallResult.new([1,2,3])) } EM.add_timer(4) { # Something Async - defer.progress(Wamp::Client::CallResult.new([4,5,6])) + defer.progress(Wamp::Client::Response::CallResult.new([4,5,6])) } EM.add_timer(6) { # Something Async - defer.succeed(Wamp::Client::CallResult.new) + defer.succeed(Wamp::Client::Response::CallResult.new) } defer end session.register('com.example.procedure', method(:add)) ``` @@ -611,12 +613,12 @@ **Caller** ```ruby call = session.call('com.example.procedure', [15], {param: value}, {}) do |result, error, details| # TODO: Do something - args = result.args - kwargs = result.kwargs + args = result[:args] + kwargs = result[:kwargs] end # At some later time... session.cancel(call, 'skip') # Options are 'skip', 'kill', or 'killnowait' @@ -639,23 +641,23 @@ # To trigger a custom error, either return something or raise a "CallError" # else the library will raise a standard error for you end def add(args, kwargs, details) - defer = Wamp::Client::Defer::ProgressiveCallDefer.new + defer = Wamp::Client::Response::ProgressiveCallDefer.new EM.add_timer(2) { # Something Async if @interrupts[defer.request].nil? - defer.progress(Wamp::Client::CallResult.new([1,2,3])) + defer.progress(Wamp::Client::Response::CallResult.new([1,2,3])) end } EM.add_timer(4) { # Something Async if @interrupts[defer.request].nil? - defer.progress(Wamp::Client::CallResult.new([4,5,6])) + defer.progress(Wamp::Client::Response::CallResult.new([4,5,6])) end } EM.add_timer(6) { # Something Async if @interrupts[defer.request].nil? - defer.succeed(Wamp::Client::CallResult.new) + defer.succeed(Wamp::Client::Response::CallResult.new) end @interrupts.delete(request) } defer end