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