Class: Wampproto::Session
- Inherits:
-
Object
- Object
- Wampproto::Session
- Defined in:
- lib/wampproto/session.rb
Overview
Session
Constant Summary collapse
- ACCESSORS =
i[ call_requests register_requests registrations invocation_requests unregister_requests publish_requests subscribe_requests subscriptions unsubscribe_requests ].freeze
Instance Attribute Summary collapse
-
#serializer ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
Instance Method Summary collapse
-
#initialize(serializer = Serializer::JSON) ⇒ Session
constructor
A new instance of Session.
- #receive(data) ⇒ Object
-
#receive_message(msg) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity.
-
#send_message(msg) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity.
Constructor Details
#initialize(serializer = Serializer::JSON) ⇒ Session
Returns a new instance of Session.
8 9 10 11 |
# File 'lib/wampproto/session.rb', line 8 def initialize(serializer = Serializer::JSON) @serializer = serializer init_state end |
Instance Attribute Details
#serializer ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
6 7 8 |
# File 'lib/wampproto/session.rb', line 6 def serializer @serializer end |
Instance Method Details
#receive(data) ⇒ Object
56 57 58 59 |
# File 'lib/wampproto/session.rb', line 56 def receive(data) msg = serializer.deserialize(data) (msg) end |
#receive_message(msg) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/wampproto/session.rb', line 61 def (msg) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity case msg when Message::Result = "received RESULT for invalid request_id" raise ValueError, unless call_requests.delete(msg.request_id) when Message::Registered = "received REGISTERED for invalid request_id" raise ValueError, unless register_requests.delete(msg.request_id) registrations[msg.registration_id] = msg.registration_id when Message::Unregistered = "received UNREGISTERED for invalid request_id" registration_id = unregister_requests.delete(msg.request_id) raise ValueError, unless registration_id = "received UNREGISTERED for invalid registration_id" raise ValueError, unless registrations.delete(registration_id) when Message::Invocation = "received INVOCATION for invalid registration_id" raise ValueError, unless registrations.include?(msg.registration_id) invocation_requests[msg.request_id] = msg.request_id when Message::Published = "received PUBLISHED for invalid topic" raise ValueError, unless publish_requests.delete(msg.request_id) when Message::Subscribed = "received SUBSCRIBED for invalid request_id" raise ValueError, unless subscribe_requests.delete(msg.request_id) subscriptions[msg.subscription_id] = msg.subscription_id when Message::Unsubscribed = "received UNSUBSCRIBED for invalid request_id" subscription_id = unsubscribe_requests.delete(msg.request_id) raise ValueError, unless subscription_id = "received UNSUBSCRIBED for invalid subscription_id" raise ValueError, unless subscriptions.delete(subscription_id) when Message::Event = "received EVENT for invalid subscription_id" raise ValueError, unless subscriptions.include?(msg.subscription_id) when Message::Error case msg. when Message::Call.type = "received ERROR for invalid call request" raise ValueError, unless call_requests.delete(msg.request_id) when Message::Register.type = "received ERROR for invalid register request" raise ValueError, unless register_requests.delete(msg.request_id) when Message::Unregister.type = "received ERROR for invalid unregister request" raise ValueError, unless unregister_requests.delete(msg.request_id) when Message::Subscribe.type = "received ERROR for invalid subscribe request" raise ValueError, unless subscribe_requests.delete(msg.request_id) when Message::Unsubscribe.type = "received ERROR for invalid unsubscribe request" raise ValueError, unless unsubscribe_requests.delete(msg.request_id) when Message::Publish.type = "received ERROR for invalid publish request" raise ValueError, unless publish_requests.delete(msg.request_id) else = "unknown error message type #{msg.class}" raise ValueError, end when Message::Abort p [:session, :abort, msg] else raise ValueError, "unknown message #{msg.class}" end msg end |
#send_message(msg) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/wampproto/session.rb', line 26 def (msg) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity case msg when Message::Call call_requests[msg.request_id] = msg.request_id when Message::Register register_requests[msg.request_id] = msg.request_id when Message::Unregister unregister_requests[msg.request_id] = msg.registration_id when Message::Yield unless invocation_requests.include?(msg.request_id) raise ValueError, "cannot yield for unknown invocation request" end invocation_requests.delete(msg.request_id) when Message::Publish publish_requests[msg.request_id] = msg.request_id if msg..fetch(:acknowledge, false) when Message::Subscribe subscribe_requests[msg.request_id] = msg.request_id when Message::Unsubscribe unsubscribe_requests[msg.request_id] = msg.subscription_id when Message::Error = "send only supported for invocation error" raise ValueError, if msg. != Message::Invocation.type invocation_requests.delete(msg.request_id) end serializer.serialize(msg) end |