wamp_client 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/wamp/client/session.rb +50 -44
- data/lib/wamp/client/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35fec0c02c367a33b50ea31953fbd8dc6c27e59e
|
4
|
+
data.tar.gz: c8d09d7b4b8982268f4f761b8b308d43aecca67b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7a400d331ea4fcf219543f6652be2c571a8aa11ec2dcd460283b5b4b2a8ff4b577a08d9968260a17e9be38d634f61f92de8dc4c4a2ad5379af6557d0245b5e7
|
7
|
+
data.tar.gz: 040ced48fc89779307a76a277bb491d993955b6b04d18054229806b05a8fecc2a5cc09032b75cbb8dd0c5b6c21d0967b56850d785add51d013db7e4a0ab10d6b
|
data/README.md
CHANGED
data/lib/wamp/client/session.rb
CHANGED
@@ -161,7 +161,7 @@ module Wamp
|
|
161
161
|
end
|
162
162
|
|
163
163
|
class Session
|
164
|
-
include
|
164
|
+
include Check
|
165
165
|
|
166
166
|
# on_join callback is called when the session joins the router. It has the following parameters
|
167
167
|
# @param details [Hash] Object containing information about the joined session
|
@@ -208,7 +208,7 @@ module Wamp
|
|
208
208
|
attr_accessor :_goodbye_sent, :_requests, :_subscriptions, :_registrations, :_defers
|
209
209
|
|
210
210
|
# Constructor
|
211
|
-
# @param transport [
|
211
|
+
# @param transport [Transport::Base] The transport that the session will use
|
212
212
|
# @param options [Hash] Hash containing different session options
|
213
213
|
# @option options [String] :authid The authentication ID
|
214
214
|
# @option options [Array] :authmethods Different auth methods that this client supports
|
@@ -268,12 +268,12 @@ module Wamp
|
|
268
268
|
|
269
269
|
details = {}
|
270
270
|
details[:roles] = WAMP_FEATURES
|
271
|
-
details[:agent] = "Ruby-Wamp::Client-#{
|
271
|
+
details[:agent] = "Ruby-Wamp::Client-#{VERSION}"
|
272
272
|
details[:authid] = self.options[:authid] if self.options[:authid]
|
273
273
|
details[:authmethods] = self.options[:authmethods] if self.options[:authmethods]
|
274
274
|
|
275
275
|
# Send Hello message
|
276
|
-
hello =
|
276
|
+
hello = Message::Hello.new(realm, details)
|
277
277
|
self._send_message(hello)
|
278
278
|
end
|
279
279
|
|
@@ -291,7 +291,7 @@ module Wamp
|
|
291
291
|
details[:message] = message
|
292
292
|
|
293
293
|
# Send Goodbye message
|
294
|
-
goodbye =
|
294
|
+
goodbye = Message::Goodbye.new(details, reason)
|
295
295
|
self._send_message(goodbye)
|
296
296
|
self._goodbye_sent = true
|
297
297
|
end
|
@@ -302,7 +302,7 @@ module Wamp
|
|
302
302
|
end
|
303
303
|
|
304
304
|
# Converts and error message to a hash
|
305
|
-
# @param msg [
|
305
|
+
# @param msg [Message::Error]
|
306
306
|
def _error_to_hash(msg)
|
307
307
|
{
|
308
308
|
error: msg.error,
|
@@ -312,7 +312,7 @@ module Wamp
|
|
312
312
|
end
|
313
313
|
|
314
314
|
# Sends a message
|
315
|
-
# @param msg [
|
315
|
+
# @param msg [Message::Base]
|
316
316
|
def _send_message(msg)
|
317
317
|
# Log the message
|
318
318
|
logger.debug("#{self.class.name} TX: #{msg.to_s}")
|
@@ -329,7 +329,7 @@ module Wamp
|
|
329
329
|
logger.debug("#{self.class.name} RX(raw): #{msg.to_s}")
|
330
330
|
|
331
331
|
# Parse the WAMP message
|
332
|
-
message =
|
332
|
+
message = Message.parse(msg)
|
333
333
|
|
334
334
|
# Print the parsed WAMP message
|
335
335
|
logger.debug("#{self.class.name} RX: #{message.to_s}")
|
@@ -338,7 +338,7 @@ module Wamp
|
|
338
338
|
if self.id.nil?
|
339
339
|
|
340
340
|
# Parse the welcome message
|
341
|
-
if message.is_a?
|
341
|
+
if message.is_a? Message::Welcome
|
342
342
|
# Get the session ID
|
343
343
|
self.id = message.session
|
344
344
|
|
@@ -347,7 +347,7 @@ module Wamp
|
|
347
347
|
|
348
348
|
# Call the callback if it is set
|
349
349
|
@on_join.call(message.details) unless @on_join.nil?
|
350
|
-
elsif message.is_a?
|
350
|
+
elsif message.is_a? Message::Challenge
|
351
351
|
# Log challenge received
|
352
352
|
logger.debug("#{self.class.name} auth challenge '#{message.authmethod}', extra: #{message.extra}")
|
353
353
|
|
@@ -362,10 +362,10 @@ module Wamp
|
|
362
362
|
signature ||= ''
|
363
363
|
extra ||= {}
|
364
364
|
|
365
|
-
authenticate =
|
365
|
+
authenticate = Message::Authenticate.new(signature, extra)
|
366
366
|
self._send_message(authenticate)
|
367
367
|
|
368
|
-
elsif message.is_a?
|
368
|
+
elsif message.is_a? Message::Abort
|
369
369
|
# Log leaving the session
|
370
370
|
logger.info("#{self.class.name} left session '#{message.reason}'")
|
371
371
|
|
@@ -377,11 +377,11 @@ module Wamp
|
|
377
377
|
else
|
378
378
|
|
379
379
|
# If goodbye, close the session
|
380
|
-
if message.is_a?
|
380
|
+
if message.is_a? Message::Goodbye
|
381
381
|
|
382
382
|
# If we didn't send the goodbye, respond
|
383
383
|
unless self._goodbye_sent
|
384
|
-
goodbye =
|
384
|
+
goodbye = Message::Goodbye.new({}, 'wamp.error.goodbye_and_out')
|
385
385
|
self._send_message(goodbye)
|
386
386
|
end
|
387
387
|
|
@@ -428,12 +428,12 @@ module Wamp
|
|
428
428
|
self._requests[:subscribe][request] = {t: topic, h: handler, o: options, c: callback}
|
429
429
|
|
430
430
|
# Send the message
|
431
|
-
subscribe =
|
431
|
+
subscribe = Message::Subscribe.new(request, options, topic)
|
432
432
|
self._send_message(subscribe)
|
433
433
|
end
|
434
434
|
|
435
435
|
# Processes the response to a subscribe request
|
436
|
-
# @param msg [
|
436
|
+
# @param msg [Message::Subscribed] The response from the subscribe
|
437
437
|
def _process_SUBSCRIBED(msg)
|
438
438
|
|
439
439
|
# Remove the pending subscription, add it to the registered ones, and inform the caller
|
@@ -454,7 +454,7 @@ module Wamp
|
|
454
454
|
end
|
455
455
|
|
456
456
|
# Processes an error from a request
|
457
|
-
# @param msg [
|
457
|
+
# @param msg [Message::Error] The response from the subscribe
|
458
458
|
def _process_SUBSCRIBE_error(msg)
|
459
459
|
|
460
460
|
# Remove the pending subscription and inform the caller of the failure
|
@@ -473,7 +473,7 @@ module Wamp
|
|
473
473
|
end
|
474
474
|
|
475
475
|
# Processes and event from the broker
|
476
|
-
# @param msg [
|
476
|
+
# @param msg [Message::Event] An event that was published
|
477
477
|
def _process_EVENT(msg)
|
478
478
|
|
479
479
|
args = msg.publish_arguments || []
|
@@ -510,12 +510,12 @@ module Wamp
|
|
510
510
|
self._requests[:unsubscribe][request] = { s: subscription, c: callback }
|
511
511
|
|
512
512
|
# Send the message
|
513
|
-
unsubscribe =
|
513
|
+
unsubscribe = Message::Unsubscribe.new(request, subscription.id)
|
514
514
|
self._send_message(unsubscribe)
|
515
515
|
end
|
516
516
|
|
517
517
|
# Processes the response to a unsubscribe request
|
518
|
-
# @param msg [
|
518
|
+
# @param msg [Message::Unsubscribed] The response from the unsubscribe
|
519
519
|
def _process_UNSUBSCRIBED(msg)
|
520
520
|
|
521
521
|
# Remove the pending unsubscription, add it to the registered ones, and inform the caller
|
@@ -537,7 +537,7 @@ module Wamp
|
|
537
537
|
|
538
538
|
|
539
539
|
# Processes an error from a request
|
540
|
-
# @param msg [
|
540
|
+
# @param msg [Message::Error] The response from the subscribe
|
541
541
|
def _process_UNSUBSCRIBE_error(msg)
|
542
542
|
|
543
543
|
# Remove the pending subscription and inform the caller of the failure
|
@@ -580,12 +580,12 @@ module Wamp
|
|
580
580
|
self._requests[:publish][request] = {t: topic, a: args, k: kwargs, o: options, c: callback} if options[:acknowledge]
|
581
581
|
|
582
582
|
# Send the message
|
583
|
-
publish =
|
583
|
+
publish = Message::Publish.new(request, options, topic, args, kwargs)
|
584
584
|
self._send_message(publish)
|
585
585
|
end
|
586
586
|
|
587
587
|
# Processes the response to a publish request
|
588
|
-
# @param msg [
|
588
|
+
# @param msg [Message::Published] The response from the subscribe
|
589
589
|
def _process_PUBLISHED(msg)
|
590
590
|
|
591
591
|
# Remove the pending publish and alert the callback
|
@@ -605,7 +605,7 @@ module Wamp
|
|
605
605
|
end
|
606
606
|
|
607
607
|
# Processes an error from a publish request
|
608
|
-
# @param msg [
|
608
|
+
# @param msg [Message::Error] The response from the subscribe
|
609
609
|
def _process_PUBLISH_error(msg)
|
610
610
|
|
611
611
|
# Remove the pending publish and inform the caller of the failure
|
@@ -648,12 +648,12 @@ module Wamp
|
|
648
648
|
self._requests[:register][request] = {p: procedure, h: handler, i: interrupt, o: options, c: callback}
|
649
649
|
|
650
650
|
# Send the message
|
651
|
-
register =
|
651
|
+
register = Message::Register.new(request, options, procedure)
|
652
652
|
self._send_message(register)
|
653
653
|
end
|
654
654
|
|
655
655
|
# Processes the response to a register request
|
656
|
-
# @param msg [
|
656
|
+
# @param msg [Message::Registered] The response from the subscribe
|
657
657
|
def _process_REGISTERED(msg)
|
658
658
|
|
659
659
|
# Remove the pending subscription, add it to the registered ones, and inform the caller
|
@@ -674,7 +674,7 @@ module Wamp
|
|
674
674
|
end
|
675
675
|
|
676
676
|
# Processes an error from a request
|
677
|
-
# @param msg [
|
677
|
+
# @param msg [Message::Error] The response from the register
|
678
678
|
def _process_REGISTER_error(msg)
|
679
679
|
|
680
680
|
# Remove the pending registration and inform the caller of the failure
|
@@ -708,7 +708,7 @@ module Wamp
|
|
708
708
|
error = CallError.new('wamp.error.runtime', [error.to_s], { backtrace: backtrace })
|
709
709
|
end
|
710
710
|
|
711
|
-
error_msg =
|
711
|
+
error_msg = Message::Error.new(Message::Types::INVOCATION, request, {}, error.error, error.args, error.kwargs)
|
712
712
|
self._send_message(error_msg)
|
713
713
|
end
|
714
714
|
|
@@ -722,6 +722,7 @@ module Wamp
|
|
722
722
|
return
|
723
723
|
end
|
724
724
|
|
725
|
+
# Wrap the result accordingly
|
725
726
|
if result.nil?
|
726
727
|
result = CallResult.new
|
727
728
|
elsif result.is_a?(CallError)
|
@@ -730,17 +731,23 @@ module Wamp
|
|
730
731
|
result = CallResult.new([result])
|
731
732
|
end
|
732
733
|
|
734
|
+
# Send either the error or the response
|
733
735
|
if result.is_a?(CallError)
|
734
736
|
self._send_INVOCATION_error(request, result)
|
735
737
|
else
|
736
|
-
yield_msg =
|
738
|
+
yield_msg = Message::Yield.new(request, options, result.args, result.kwargs)
|
737
739
|
self._send_message(yield_msg)
|
738
740
|
end
|
741
|
+
|
742
|
+
# Remove the defer if this was not a progress update
|
743
|
+
if check_defer and options[:progress] == nil
|
744
|
+
self._defers.delete(request)
|
745
|
+
end
|
739
746
|
end
|
740
747
|
|
741
748
|
|
742
749
|
# Processes and event from the broker
|
743
|
-
# @param msg [
|
750
|
+
# @param msg [Message::Invocation] An procedure that was called
|
744
751
|
def _process_INVOCATION(msg)
|
745
752
|
|
746
753
|
request = msg.request
|
@@ -759,7 +766,7 @@ module Wamp
|
|
759
766
|
value = h.call(args, kwargs, details)
|
760
767
|
|
761
768
|
# If a defer was returned, handle accordingly
|
762
|
-
if value.is_a?
|
769
|
+
if value.is_a? Defer::CallDefer
|
763
770
|
value.request = request
|
764
771
|
value.registration = msg.registered_registration
|
765
772
|
|
@@ -769,23 +776,22 @@ module Wamp
|
|
769
776
|
# On complete, send the result
|
770
777
|
value.on_complete do |defer, result|
|
771
778
|
self.yield(defer.request, result, {}, true)
|
772
|
-
self._defers.delete(defer.request)
|
773
779
|
end
|
774
780
|
|
775
781
|
# On error, send the error
|
776
782
|
value.on_error do |defer, error|
|
777
|
-
|
778
|
-
self.
|
783
|
+
error = CallError.new("wamp.error.runtime", [error]) if error.is_a?(String)
|
784
|
+
self.yield(defer.request, error, {}, true)
|
779
785
|
end
|
780
786
|
|
781
787
|
# For progressive, return the progress
|
782
|
-
if value.is_a?
|
788
|
+
if value.is_a? Defer::ProgressiveCallDefer
|
783
789
|
value.on_progress do |defer, result|
|
784
790
|
self.yield(defer.request, result, {progress: true}, true)
|
785
791
|
end
|
786
792
|
end
|
787
793
|
|
788
|
-
|
794
|
+
# Else it was a normal response
|
789
795
|
else
|
790
796
|
self.yield(request, value)
|
791
797
|
end
|
@@ -799,7 +805,7 @@ module Wamp
|
|
799
805
|
end
|
800
806
|
|
801
807
|
# Processes the interrupt
|
802
|
-
# @param msg [
|
808
|
+
# @param msg [Message::Interrupt] An interrupt to a procedure
|
803
809
|
def _process_INTERRUPT(msg)
|
804
810
|
|
805
811
|
request = msg.invocation_request
|
@@ -851,12 +857,12 @@ module Wamp
|
|
851
857
|
self._requests[:unregister][request] = { r: registration, c: callback }
|
852
858
|
|
853
859
|
# Send the message
|
854
|
-
unregister =
|
860
|
+
unregister = Message::Unregister.new(request, registration.id)
|
855
861
|
self._send_message(unregister)
|
856
862
|
end
|
857
863
|
|
858
864
|
# Processes the response to a unregister request
|
859
|
-
# @param msg [
|
865
|
+
# @param msg [Message::Unregistered] The response from the unsubscribe
|
860
866
|
def _process_UNREGISTERED(msg)
|
861
867
|
|
862
868
|
# Remove the pending unregistration, add it to the registered ones, and inform the caller
|
@@ -877,7 +883,7 @@ module Wamp
|
|
877
883
|
end
|
878
884
|
|
879
885
|
# Processes an error from a request
|
880
|
-
# @param msg [
|
886
|
+
# @param msg [Message::Error] The response from the subscribe
|
881
887
|
def _process_UNREGISTER_error(msg)
|
882
888
|
|
883
889
|
# Remove the pending subscription and inform the caller of the failure
|
@@ -921,7 +927,7 @@ module Wamp
|
|
921
927
|
self._requests[:call][request] = {p: procedure, a: args, k: kwargs, o: options, c: callback}
|
922
928
|
|
923
929
|
# Send the message
|
924
|
-
msg =
|
930
|
+
msg = Message::Call.new(request, options, procedure, args, kwargs)
|
925
931
|
self._send_message(msg)
|
926
932
|
|
927
933
|
call = Call.new(self, request)
|
@@ -940,7 +946,7 @@ module Wamp
|
|
940
946
|
end
|
941
947
|
|
942
948
|
# Processes the response to a publish request
|
943
|
-
# @param msg [
|
949
|
+
# @param msg [Message::Result] The response from the call
|
944
950
|
def _process_RESULT(msg)
|
945
951
|
|
946
952
|
details = msg.details || {}
|
@@ -962,7 +968,7 @@ module Wamp
|
|
962
968
|
end
|
963
969
|
|
964
970
|
# Processes an error from a call request
|
965
|
-
# @param msg [
|
971
|
+
# @param msg [Message::Error] The response from the call
|
966
972
|
def _process_CALL_error(msg)
|
967
973
|
|
968
974
|
# Remove the pending publish and inform the caller of the failure
|
@@ -995,7 +1001,7 @@ module Wamp
|
|
995
1001
|
self.class.check_nil('call', call, false)
|
996
1002
|
|
997
1003
|
# Send the message
|
998
|
-
cancel =
|
1004
|
+
cancel = Message::Cancel.new(call.id, { mode: mode })
|
999
1005
|
self._send_message(cancel)
|
1000
1006
|
end
|
1001
1007
|
|
data/lib/wamp/client/version.rb
CHANGED