class AgentFIX::Agent
Attributes
bookmark[RW]
connection_type[R]
default[RW]
name[R]
session[RW]
Public Class Methods
new(name, connection_type)
click to toggle source
# File lib/agent_fix/agent.rb, line 13 def initialize name, connection_type @name = name @connection_type = connection_type @logged_on = false @bookmark = 0 @all_messages = MessageCache.new @logger = Java::org.slf4j.LoggerFactory.getLogger("AgentFIX.Agent") end
Public Instance Methods
fromAdmin(message, sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 66 def fromAdmin(message, sessionId) @logger.debug "#{@name} fromAdmin #{sessionId.to_s}: #{message.to_s.gsub("","|")}" @all_messages.add_message(message:message,sent:false,admin:true) end
fromApp(message, sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 56 def fromApp(message, sessionId) @logger.debug "#{@name} fromApp #{sessionId.to_s}: #{message.to_s.gsub("","|")}" @all_messages.add_message(message:message,sent:false,admin:false) end
history(opts={})
click to toggle source
# File lib/agent_fix/agent.rb, line 98 def history opts={} opts[:since] ||= 0 opts[:received_only] ||= false opts[:include_session]||= AgentFIX::include_session_level? indexed_msgs = [] @all_messages.messages.each_with_index { |m,i| indexed_msgs << m.merge(index:i) } indexed_msgs = indexed_msgs.slice(opts[:since], indexed_msgs.length) if opts[:received_only] indexed_msgs = indexed_msgs.find_all {|m| !m[:sent]} end unless opts[:include_session] indexed_msgs = indexed_msgs.find_all {|m| !m[:admin]} end indexed_msgs end
init()
click to toggle source
# File lib/agent_fix/agent.rb, line 22 def init parse_settings @connector = case @connection_type when :acceptor then quickfix.SocketAcceptor.new(self, @storeFactory, @settings, @logFactory, @messageFactory) when :initiator then quickfix.SocketInitiator.new(self, @storeFactory, @settings, @logFactory, @messageFactory) else nil end end
loggedOn?()
click to toggle source
# File lib/agent_fix/agent.rb, line 71 def loggedOn? lock.synchronize do return @logged_on end end
messages_received(opts = {})
click to toggle source
# File lib/agent_fix/agent.rb, line 118 def messages_received opts = {} history opts.merge(:received_only=>true) end
onCreate(sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 31 def onCreate(sessionId) @default_session = sessionId end
onLogon(sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 35 def onLogon(sessionId) @logger.debug "#{@name} onLogon: #{sessionId.to_s}" lock.synchronize do @logged_on = true end end
onLogout(sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 43 def onLogout(sessionId) @logger.debug "#{@name} onLogout: #{sessionId.to_s}" lock.synchronize do @logged_on = false end end
reset()
click to toggle source
# File lib/agent_fix/agent.rb, line 85 def reset clear_state! end
sendToTarget(msg)
click to toggle source
# File lib/agent_fix/agent.rb, line 77 def sendToTarget msg msg.getHeader.setField(quickfix.field.BeginString.new(@default_session.getBeginString)) msg.getHeader.setField(quickfix.field.TargetCompID.new(@default_session.getTargetCompID)) msg.getHeader.setField(quickfix.field.SenderCompID.new(@default_session.getSenderCompID)) quickfix.Session.sendToTarget(msg) end
start()
click to toggle source
# File lib/agent_fix/agent.rb, line 89 def start @connector.start end
stop(force=false)
click to toggle source
# File lib/agent_fix/agent.rb, line 93 def stop force=false @connector.stop force clear_state! end
toAdmin(message, sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 61 def toAdmin(message, sessionId) @logger.debug "#{@name} toAdmin #{sessionId.to_s}: #{message.to_s.gsub("","|")}" @all_messages.add_message(message:message,sent:true,admin:true) end
toApp(message, sessionId)
click to toggle source
# File lib/agent_fix/agent.rb, line 51 def toApp(message, sessionId) @logger.debug "#{@name} toApp #{sessionId.to_s}: #{message.to_s.gsub("","|")}" @all_messages.add_message(message:message,sent:true,admin:false) end
Protected Instance Methods
clear_state!()
click to toggle source
# File lib/agent_fix/agent.rb, line 124 def clear_state! @all_messages.clear! @bookmark = 0 end
parse_settings()
click to toggle source
# File lib/agent_fix/agent.rb, line 129 def parse_settings session_settings = "[DEFAULT]\n" session_settings << "ConnectionType=#{@connection_type}\n" @default ||= {} AgentFIX::session_defaults.merge(@default).each do |k,v| session_settings << "#{k}=#{v}\n" end unless @session.nil? session_settings << "[SESSION]\n" @session.each { |k,v| session_settings << "#{k}=#{v}\n"} end @logger.info "Settings for #{@name}: #{session_settings}" @storeFactory = quickfix.MemoryStoreFactory.new() @messageFactory = quickfix.DefaultMessageFactory.new() @settings = quickfix.SessionSettings.new( Java::java.io.ByteArrayInputStream.new(session_settings.to_java_bytes) ) @logFactory = quickfix.FileLogFactory.new(@settings) end
Private Instance Methods
lock()
click to toggle source
# File lib/agent_fix/agent.rb, line 153 def lock @lock||=Mutex.new end