class Modbus::Connection::TCPClient

Public Class Methods

new(handler) click to toggle source

Initializes a new connection instance.

@param handler The managing handler object.

Calls superclass method Modbus::Connection::Base::new
# File lib/modbus/connection/tcp_client.rb, line 17
def initialize(handler)
  super

  @transaction_ident    = 0
  @pending_transactions = []
end

Public Instance Methods

connection_completed() click to toggle source

EM callback. Called when the TCP connection is sucessfully established.

# File lib/modbus/connection/tcp_client.rb, line 27
def connection_completed
  @handler.connected self
end
next_transaction_ident() click to toggle source

Creates a successor transaction identfication in the range of 0..65535

@return [Integer] The transaction identification

# File lib/modbus/connection/tcp_client.rb, line 43
def next_transaction_ident
  @transaction_ident = @transaction_ident.succ.modulo 2**16
end
pick_pending_transaction(transaction_ident) click to toggle source

Looks for a matching transaction in the internal store by a transaction ident and returns it if found.

@param transaction_ident [Integer] The transaction ident to match. @return [Modbus::Transaction] The found Transaction object.

# File lib/modbus/connection/tcp_client.rb, line 64
def pick_pending_transaction(transaction_ident)
  transaction = @pending_transactions.find { |r| r.transaction_ident == transaction_ident }
  @pending_transactions.delete transaction
  transaction
end
track_transaction(transaction) click to toggle source

Adds Transaction object to the list of tracked transactions

@param transaction [Modbus::Transaction] The transaction object to add.

# File lib/modbus/connection/tcp_client.rb, line 52
def track_transaction(transaction)
  # TODO log "exception"
  # puts "Too many pending pending transactions: #{@pending_transactions.size}" if @pending_transactions.size > 100
  @pending_transactions << transaction
end
unbind() click to toggle source

EM callback. Called when the TCP connection is closed.

# File lib/modbus/connection/tcp_client.rb, line 34
def unbind
  @handler.disconnected self
end

Private Instance Methods

transaction_class() click to toggle source
# File lib/modbus/connection/tcp_client.rb, line 74
def transaction_class
  Modbus::Transaction::Client
end