我正在使用“http://www.quickfixengine.org”中的python代码示例并提出问题。我使用下面显示的代码段创建我的应用程序
import quickfix
if len(sys.argv) < 2: return
fileName = sys.argv[1]
try:
settings = quickfix.SessionSettings(fileName)
application = quickfix.MyApplication()
storeFactory = quickfix.FileStoreFactory(settings)
logFactory = quickfix.FileLogFactory(settings)
initiator = quickfix.SocketInitiator(application, storeFactory, settings, logFactory)
initiator.start()
# while condition == true: do something
initiator.stop()
except quickfix.ConfigError, e:
print e
建立连接并登录,现在我想发送消息(例如,订单)。提供的代码段为:
def sendOrderCancelRequest:
message = quickfix.Message();
header = message.getHeader();
header.setField(...)
*<...build the header and body...>*
message.setField(...)
Session.sendToTarget(message)
我的问题是Session
对象。在哪里/如何创建?是否使用Session = quickfix.Session()
或其他未显示的内容创建?我已经尝试了一些东西,但由于缺乏文档,它只是反复试验......
答案 0 :(得分:1)
Session
不是对象,它是类。在这种情况下,sendToTarget()
是静态方法。
Session
,维护一个类静态的会话列表。 sendToTarget()
使用邮件中的标题字段(或您明确提供的标题字段)来确定要发送的会话。
编辑:我误解了你的问题。这是你问的答案。
会话是在QF引擎的内容中创建的。它由SessionFactory
创建,initialize()
本身是在Initiator
和Acceptor
的{{1}}函数中创建的。如果你想攻击引擎源,这只是你需要进入的东西。
作为应用程序开发人员,您实际上不需要会话句柄。如果你认为你这样做,那么我猜你可能正在计划做一些不推荐的事情(比如想要以编程方式重置seq#s,这是QF列表上常见的新手坏主意)。
如果您真的想要一个句柄,可以使用Session.lookupSession()
或getSession()
或Initiator
的{{1}}个功能之一。但同样,我认为没有理由打扰。我是一名经验丰富的QF用户,我不得不去看看,因为它是我从来没有做过。