首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QuickFIX中发送消息

在QuickFIX中发送消息
EN

Stack Overflow用户
提问于 2012-11-17 06:13:04
回答 1查看 2.7K关注 0票数 1

我正在使用"http://www.quickfixengine.org“中的python代码示例,并有一个问题。我使用如下所示的代码段创建应用程序

代码语言:javascript
复制
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

连接已建立,我已登录,现在我想发送一条消息(例如,一个订单)。为此提供的代码段是:

代码语言:javascript
复制
def sendOrderCancelRequest:
    message = quickfix.Message();
    header = message.getHeader();

    header.setField(...)
    *<...build the header and body...>*
    message.setField(...)

    Session.sendToTarget(message)

我的问题是关于Session对象的。它是在哪里/如何创建的?它是用Session = quickfix.Session()之类的东西创建的,还是他们没有显示的其他东西?我已经尝试了一些东西,但由于缺乏文档,它只是试错……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 03:49:09

Session不是一个对象,它是一个类。在本例中,sendToTarget()是静态方法。

Session维护会话的类静态列表。sendToTarget()使用您的消息(或您显式提供的消息)中的标头字段来确定要发送的会话。

编辑:我误解了你的问题。这是你所问问题的答案。

会话是在QF引擎的内部创建的。它是由SessionFactory创建的,该a本身是在InitiatorAcceptorinitialize()函数中创建的。只有当你想黑进引擎源的时候,你才需要进入这些东西。

作为一名应用程序开发人员,您真的不需要会话的句柄。如果你认为你这样做了,那么我猜你可能正在计划做一些不被推荐的事情(比如想要以编程方式重置seq#s,这在QF列表中是一个常见的新手坏主意)。

如果你真的想要一个句柄,你可以使用Session.lookupSession()或者InitiatorAcceptor的某个getSession()函数。但是,我再说一次,我看不出有什么理由去麻烦你。我是一个经验丰富的QF用户,我不得不去查这个,因为这是我从来没有做过的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13425195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档