2014-12-01 2 views
2

사용자 이름과 암호를 FIX 구성 파일에 넣었습니다. 그래서 나는 세션 변수 나 SessionSetting 변수 또는 session.SessionDataDictionary 또는 다른 변수와 같은 내부 변수에서 사용자 이름과 암호를 얻을 수 있어야한다고 생각해야합니다. 그러나, 나는 내부 변수에서 사용자 이름과 비밀 번호를 얻을 수있는 직접적인 해결책을 찾지 못했습니다.QuickFix/n에 대한 세션 등록 정보 (사용자 이름 및 암호) 받기

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

논리적으로 말하면 이것은 매우 가능합니다. 그러나 어느 누구도이 작업을 제안하지 않거나 Google에서이 작업을 수행하는 사람을 보지 못했습니다. Google에서 찾은 코드 비트만 있습니다. 그러나 위의 코드

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

은 QuickFix의 자바 버전을 위해 노력하고이 방법은 내가 비슷한 결과를 달성하기 위해 찾고 QuickFix의 DOTNET 버전 (즉, QuickFix/N)

getString(sessionId, "Username"); 

에서 사용할 수 없습니다 QuickFix/n을 사용하여 FIX 4.4. 누군가 QuickFix에 익숙하다면 이것은 매우 간단한 작업 일 수 있습니다. 정말 조언이나 조언을 주셔서 감사합니다. Java 또는 C++ 버전에 대한 아이디어가 모두 비슷하다면 괜찮습니다. 이 사용자 이름과 암호가 어떤 변수에 저장되어 있는지 그리고 Csharp 코드를 사용하여이를 어떻게 얻을 수 있는지 알 필요가 있습니다.

미리 감사드립니다.

+0

왜 파일 변수를 읽고 디버깅하지 않고 동일한 방법을 사용합니까? – DumbCoder

+0

안녕하세요. 아주 좋은 점. 그러나 QuickFix는 SessionSetting 생성자에서 구성 파일을로드합니다. 그것은 SessionSetting 클래스 내에 메소드를 가지지 않습니다. 하지만 오히려, 내 생각 엔, 메소드를 얻고 설정 파일에서 사용자 이름과 패스워드를 얻기위한 전용 클래스가 있어야만한다. QuickFix의 복잡한 구조 때문에 get 메소드에 액세스해야하는 클래스가 아직 없습니다. 나쁜 설명에 대해 유감입니다. QuickFix는 복잡하고 머리도 복잡합니다. :) :) – auto9817

답변

3

오른쪽 트랙에 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를 참조하십시오

이 예를 참조하십시오.

+1

의심의 여지가 없습니다. 이것이 최고의 대답입니다. 귀중한 경험을 공유해 주셔서 감사합니다. :) :) – auto9817