我正在使用"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()之类的东西创建的,还是他们没有显示的其他东西?我已经尝试了一些东西,但由于缺乏文档,它只是试错……
发布于 2012-11-18 03:49:09
Session不是一个对象,它是一个类。在本例中,sendToTarget()是静态方法。
Session维护会话的类静态列表。sendToTarget()使用您的消息(或您显式提供的消息)中的标头字段来确定要发送的会话。
编辑:我误解了你的问题。这是你所问问题的答案。
会话是在QF引擎的内部创建的。它是由SessionFactory创建的,该a本身是在Initiator和Acceptor的initialize()函数中创建的。只有当你想黑进引擎源的时候,你才需要进入这些东西。
作为一名应用程序开发人员,您真的不需要会话的句柄。如果你认为你这样做了,那么我猜你可能正在计划做一些不被推荐的事情(比如想要以编程方式重置seq#s,这在QF列表中是一个常见的新手坏主意)。
如果你真的想要一个句柄,你可以使用Session.lookupSession()或者Initiator或Acceptor的某个getSession()函数。但是,我再说一次,我看不出有什么理由去麻烦你。我是一个经验丰富的QF用户,我不得不去查这个,因为这是我从来没有做过的事情。
https://stackoverflow.com/questions/13425195
复制相似问题