Class: Lab::Lims::Api::WsApi
- Inherits:
-
Object
- Object
- Lab::Lims::Api::WsApi
- Defined in:
- app/services/lab/lims/api/ws_api.rb
Overview
Retrieve results from LIMS only through a websocket
Instance Method Summary collapse
- #consume_orders(**_kwargs) ⇒ Object
-
#initialize(config) ⇒ WsApi
constructor
A new instance of WsApi.
Constructor Details
#initialize(config) ⇒ WsApi
Returns a new instance of WsApi.
11 12 13 14 15 |
# File 'app/services/lab/lims/api/ws_api.rb', line 11 def initialize(config) @config = config @results_queue = [] @socket = nil end |
Instance Method Details
#consume_orders(**_kwargs) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/services/lab/lims/api/ws_api.rb', line 17 def consume_orders(**_kwargs) loop do results = fetch_results unless results Rails.logger.debug('No results available... Waiting for results...') sleep(Lab::Lims::Config.updates_poll_frequency) next end Rails.logger.info("Received result for ##{results['tracking_number']}") order = find_order(results['tracking_number']) next unless order Rails.logger.info("Updating result for order ##{order.order_id}") yield make_order_dto(order, results), OpenStruct.new(last_seq: 1) end end |