Class: MockServer::WebSocketClient
- Inherits:
-
Object
- Object
- MockServer::WebSocketClient
- Defined in:
- lib/mockserver/websocket_client.rb
Instance Attribute Summary collapse
-
#client_id ⇒ Object
readonly
Returns the value of attribute client_id.
Instance Method Summary collapse
-
#clear_breakpoint_handlers ⇒ Object
Remove all breakpoint handlers.
- #close ⇒ Object
- #connect(host, port, context_path: '', secure: false, ca_cert_path: nil, client_id: nil, tls_verify: true) ⇒ Object
- #connected? ⇒ Boolean
-
#initialize ⇒ WebSocketClient
constructor
A new instance of WebSocketClient.
- #listen ⇒ Object
- #register_forward_callback(forward_fn, response_fn = nil) ⇒ Object
- #register_response_callback(callback_fn) ⇒ Object
-
#remove_breakpoint_handlers(breakpoint_id) ⇒ Object
Remove all handlers for the given breakpoint id.
-
#set_breakpoint_request_handler(breakpoint_id, handler) ⇒ Object
Register a REQUEST-phase breakpoint handler keyed by breakpoint id.
-
#set_breakpoint_response_handler(breakpoint_id, handler) ⇒ Object
Register a RESPONSE-phase breakpoint handler keyed by breakpoint id.
-
#set_breakpoint_stream_frame_handler(breakpoint_id, handler) ⇒ Object
Register a stream-frame breakpoint handler keyed by breakpoint id.
Constructor Details
#initialize ⇒ WebSocketClient
Returns a new instance of WebSocketClient.
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/mockserver/websocket_client.rb', line 92 def initialize @ws = nil @client_id = nil @response_callback = nil @forward_callback = nil @forward_response_callback = nil @stopped = false @connected = false @listen_thread = nil @host = '' @port = 0 @context_path = '' @secure = false @ca_cert_path = nil @tls_verify = true @logger = Logger.new($stdout) @logger.progname = 'MockServer::WebSocketClient' @logger.level = Logger::WARN @registration_queue = nil # Per-breakpoint-id handlers for matcher-driven breakpoints @breakpoint_request_handlers = {} @breakpoint_response_handlers = {} @breakpoint_stream_frame_handlers = {} end |
Instance Attribute Details
#client_id ⇒ Object (readonly)
Returns the value of attribute client_id.
90 91 92 |
# File 'lib/mockserver/websocket_client.rb', line 90 def client_id @client_id end |
Instance Method Details
#clear_breakpoint_handlers ⇒ Object
Remove all breakpoint handlers.
170 171 172 173 174 |
# File 'lib/mockserver/websocket_client.rb', line 170 def clear_breakpoint_handlers @breakpoint_request_handlers.clear @breakpoint_response_handlers.clear @breakpoint_stream_frame_handlers.clear end |
#close ⇒ Object
181 182 183 184 185 186 187 188 189 190 |
# File 'lib/mockserver/websocket_client.rb', line 181 def close @stopped = true @connected = false @ws&.close if @ws rescue StandardError # ignore close errors ensure @ws = nil @listen_thread&.join(5) if @listen_thread && @listen_thread != Thread.current end |
#connect(host, port, context_path: '', secure: false, ca_cert_path: nil, client_id: nil, tls_verify: true) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/mockserver/websocket_client.rb', line 121 def connect(host, port, context_path: '', secure: false, ca_cert_path: nil, client_id: nil, tls_verify: true) @host = host @port = port @context_path = context_path @secure = secure @ca_cert_path = ca_cert_path @tls_verify = tls_verify registration_id = client_id || SecureRandom.uuid do_connect(registration_id) @client_id end |
#connected? ⇒ Boolean
117 118 119 |
# File 'lib/mockserver/websocket_client.rb', line 117 def connected? @connected && !@stopped end |
#listen ⇒ Object
176 177 178 179 |
# File 'lib/mockserver/websocket_client.rb', line 176 def listen @listen_thread = Thread.new { listen_loop } @listen_thread.abort_on_exception = false end |
#register_forward_callback(forward_fn, response_fn = nil) ⇒ Object
140 141 142 143 |
# File 'lib/mockserver/websocket_client.rb', line 140 def register_forward_callback(forward_fn, response_fn = nil) @forward_callback = forward_fn @forward_response_callback = response_fn end |
#register_response_callback(callback_fn) ⇒ Object
136 137 138 |
# File 'lib/mockserver/websocket_client.rb', line 136 def register_response_callback(callback_fn) @response_callback = callback_fn end |
#remove_breakpoint_handlers(breakpoint_id) ⇒ Object
Remove all handlers for the given breakpoint id.
161 162 163 164 165 166 167 |
# File 'lib/mockserver/websocket_client.rb', line 161 def remove_breakpoint_handlers(breakpoint_id) return unless breakpoint_id @breakpoint_request_handlers.delete(breakpoint_id) @breakpoint_response_handlers.delete(breakpoint_id) @breakpoint_stream_frame_handlers.delete(breakpoint_id) end |
#set_breakpoint_request_handler(breakpoint_id, handler) ⇒ Object
Register a REQUEST-phase breakpoint handler keyed by breakpoint id.
146 147 148 |
# File 'lib/mockserver/websocket_client.rb', line 146 def set_breakpoint_request_handler(breakpoint_id, handler) @breakpoint_request_handlers[breakpoint_id] = handler if breakpoint_id && handler end |
#set_breakpoint_response_handler(breakpoint_id, handler) ⇒ Object
Register a RESPONSE-phase breakpoint handler keyed by breakpoint id.
151 152 153 |
# File 'lib/mockserver/websocket_client.rb', line 151 def set_breakpoint_response_handler(breakpoint_id, handler) @breakpoint_response_handlers[breakpoint_id] = handler if breakpoint_id && handler end |
#set_breakpoint_stream_frame_handler(breakpoint_id, handler) ⇒ Object
Register a stream-frame breakpoint handler keyed by breakpoint id.
156 157 158 |
# File 'lib/mockserver/websocket_client.rb', line 156 def set_breakpoint_stream_frame_handler(breakpoint_id, handler) @breakpoint_stream_frame_handlers[breakpoint_id] = handler if breakpoint_id && handler end |