6

ここで定義されているように、Quickfix/n 1.4 でメッセージ タイプを抽出する最も効率的な方法は何ですか: http://www.fixprotocol.org/FIXimate3.0/en/FIX.5.0SP2/messages_sorted_by_type.html

私は現在var msgType = Message.GetMsgType(message.ToString());、ログオン メッセージの結果が "A" になるものを使用しています。より良い方法はありますか?ToAdmin(...)ユーザー名とパスワードを追加できるように、発信ログオン要求メッセージをキャッチするためにメッセージの種類を特定しようとします。

私は MessageCracker を介してそれをやりたいと思っていますが、これまでのところ、すべての OnMessage オーバーロードを実装していない場合に備えて、残りのメッセージ タイプをすべてキャッチする方法を見つけていません。(関連する質問を参照してください: Quickfix、オーバーロードされたメソッドによって処理されない受信メッセージを処理するための「キャッチオール」メソッド OnMessage はありますか? )。

ありがとう

4

3 に答える 3

5

あなたのタイトルの質問ではありませんが、その重要な部分です:

ユーザー名とパスワードを追加できるように、発信ログオン要求メッセージをキャッチするために、ToAdmin(...) 内のメッセージ タイプを特定しようとします。

これは、ほとんどそれを釘付けにするコードの塊です (この投稿から QF/n メーリング リストへの引用):

    public void ToAdmin(Message message, SessionID sessionID)
    {
        // Check message type
        if (message.Header.GetField(Tags.MsgType) == MsgType.LOGON)
        {
            // Yes it is logon message
            // Check if local variables YourUserName and YourPassword are set
            if (!string.IsNullOrEmpty(YourUserName) && !string.IsNullOrEmpty(YourPassword))
            {
                // Add Username and Password fields to logon message
                ((Logon) message).Set(new Username(YourUserName));
                ((Logon) message).Set(new Password(YourPassword));
            }
        }
    }
于 2013-07-31T13:50:26.327 に答える
1

この場合、ToAdmin 内でこれを行うことができます。

var logonMessage = msg as Logon;
if (logonMessage != null)
{
    //Treat the logon message as you want
}

または、あなたが言及した他の回答で説明されているように MessageCracker を使用します。

それが役に立てば幸い。

于 2013-07-31T13:40:48.657 に答える