Class: Trophonius::ConnectionManager

Inherits:
Object
  • Object
show all
Includes:
DebugPrinter
Defined in:
lib/connectors/connection_manager.rb

Instance Method Summary collapse

Methods included from DebugPrinter

print_debug

Constructor Details

#initializeConnectionManager

Returns a new instance of ConnectionManager.



5
6
7
8
9
10
11
12
13
# File 'lib/connectors/connection_manager.rb', line 5

def initialize
  @connections = {}
  Trophonius.config.pool_size.times do
    connection = Connection.new
    @connections[connection.id] = { connection: connection, queue: [] }

    DebugPrinter.print_debug('CONNECTION CREATED', @connections[connection.id].inspect)
  end
end

Instance Method Details

#dequeue(id) ⇒ Object



22
23
24
25
26
27
# File 'lib/connectors/connection_manager.rb', line 22

def dequeue(id)
  connection = @connections.values.find { |c| c[:queue].include?(id) }
  connection[:queue].delete_if { |q_id| q_id == id }
  puts "out,#{connection[:connection].id},#{connection[:connection].token},#{connection[:queue].length}" if Trophonius.config.debug == true
  nil
end

#disconnect_allObject



29
30
31
32
# File 'lib/connectors/connection_manager.rb', line 29

def disconnect_all
  @connections.reject { |_connection_id, connection| connection[:connection].token.blank? }
              .each { |_connection_id, connection| connection[:connection].disconnect }
end

#enqueue(id) ⇒ Object



15
16
17
18
19
20
# File 'lib/connectors/connection_manager.rb', line 15

def enqueue(id)
  connection = @connections.values.min_by { |c| c[:queue].length }
  connection[:queue].push(id)
  puts "in,#{connection[:connection].id},#{connection[:connection].token},#{connection[:queue].length}" if Trophonius.config.debug == true
  auth_header_bearer(connection[:connection].id)
end