获取QuickFix / n的会话属性(用户名和密码)

时间:2014-12-01 02:42:27

标签: c# quickfix fix-protocol quickfixj

我已将我的用户名和密码放在FIX配置文件中。所以我必须认为我应该能够从一些内部变量获取用户名和密码,如会话变量或SessionSetting变量或session.SessionDataDictionary或其他一些变量。但是,我没有找到任何从内部变量获取用户名和密码的直接解决方案。

[SESSION]
BeginString=FIX.4.4
SenderCompID= xxxxx
Username= xxxx
Password= xxxx

从逻辑上讲,这可能是非常可行的。但是,没有人建议这样做,或者我没有看到有人在谷歌这样做。只有我从谷歌找到的代码位是这个。

String username = sessionSettings.getString(sessionId, "Username"); //only works for Java version of QuickFix

但是上面的代码仅适用于QuickFix的Java版本,并且DotF版本的QuickFix(即QuickFix / n)中没有此方法

getString(sessionId, "Username"); 

我希望使用QuickFix / n为FIX 4.4获得类似的结果。 如果有人熟悉QuickFix,这可能是非常简单的任务。 我将非常感谢您的提示或建议。如果您对Java或C ++版本有所了解,我不介意它们都非常相似。我只需要知道这个用户名和密码存储在哪个变量中,如何使用Csharp代码来获取它。

提前致谢。

1 个答案:

答案 0 :(得分:4)

您使用String username = sessionSettings.getString(sessionId, "Username");走在正确的轨道上,但QuickFIX / n中的方法调用略有不同。

通话更像是sessionSettings.Get(sessionId).GetString("Username");

见这个例子:

var configuration =
    new System.Text.StringBuilder().AppendLine("[ DEFAULT ]")
        .AppendLine("ConnectionType=initiator")
        .AppendLine("[SESSION]")
        .AppendLine("BeginString=FIX.4.4")
        .AppendLine("SenderCompID=Sender")
        .AppendLine("TargetCompID=Target")
        .AppendLine("Username=Gandalf")
        .AppendLine("Password=YouShallNotPass")
        .ToString();
var settings = new SessionSettings(new System.IO.StringReader(configuration));
var session = new SessionID("FIX.4.4", "Sender", "Target");
var sender = settings.Get(session).GetString("SenderCompID"); // Returns Sender
var user = settings.Get(session).GetString("Username"); // Returns Gandalf
var pass = settings.Get(session).GetString("Password"); // Returns YouShallNotPass

供参考,请参阅unit tests for SessionSettings