1

「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()のようなもの、または表示されていない他のもので作成されますか? 私はいくつかのことを試しましたが、ドキュメントが不足しているため、試行錯誤にすぎません...

4

1 に答える 1

1

Sessionオブジェクトではなく、クラスです。この場合、sendToTarget()は静的メソッドです。

Session、セッションのクラス静的リストを維持します。 sendToTarget()は、メッセージ(または明示的に指定したもの)のヘッダーフィールドを使用して、送信するセッションを決定します。


編集:私はあなたの質問を読み間違えました。これがあなたが尋ねたことに対する答えです。

セッションはQFエンジンの腸で作成されます。によって作成され、SessionFactoryそれ自体がとの関数で作成されinitialize()ます。これは、エンジンソースをハッキングしたい場合にのみ必要なものです。InitiatorAcceptor

アプリ開発者として、あなたは本当にセッションへのハンドルを必要としません。あなたがそう思うなら、おそらくあなたは推奨されていないことをすることを計画していると思います(たとえば、QFリストの一般的な初心者の悪い考えであるseq#をプログラムでリセットしたいなど)。

本当にハンドルが必要な場合は、またはの関数のSession.lookupSession()1つを使用できます。しかし、繰り返しになりますが、気にする理由はありません。私はベテランのQFユーザーであり、これを調べに行かなければなりませんでしたgetSession()InitiatorAcceptor

于 2012-11-17T19:49:08.513 に答える