本文整理匯總了C#中QuickFix.Message.IsSetField方法的典型用法代碼示例。如果您正苦於以下問題:C# Message.IsSetField方法的具體用法?C# Message.IsSetField怎麽用?C# Message.IsSetField使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類QuickFix.Message
的用法示例。
在下文中一共展示了Message.IsSetField方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: SendRaw
protected bool SendRaw(Message message, int seqNum)
{
lock (sync_)
{
string msgType = message.Header.GetField(Fields.Tags.MsgType);
InitializeHeader(message, seqNum);
if (Message.IsAdminMsgType(msgType))
{
this.Application.ToAdmin(message, this.SessionID);
if (MsgType.LOGON.Equals(msgType) && !state_.ReceivedReset)
{
Fields.ResetSeqNumFlag resetSeqNumFlag = new QuickFix.Fields.ResetSeqNumFlag(false);
if (message.IsSetField(resetSeqNumFlag))
message.GetField(resetSeqNumFlag);
if (resetSeqNumFlag.getValue())
{
state_.Reset();
message.Header.SetField(new Fields.MsgSeqNum(state_.GetNextSenderMsgSeqNum()));
}
state_.SentReset = resetSeqNumFlag.Obj;
}
}
else
{
this.Application.ToApp(message, this.SessionID);
}
string messageString = message.ToString();
if (0 == seqNum)
Persist(message, messageString);
return Send(messageString);
}
}
示例2: NextSequenceReset
protected void NextSequenceReset(Message sequenceReset)
{
bool isGapFill = false;
if (sequenceReset.IsSetField(Fields.Tags.GapFillFlag))
isGapFill = sequenceReset.GetBoolean(Fields.Tags.GapFillFlag);
if (!Verify(sequenceReset, isGapFill, isGapFill))
return;
if (sequenceReset.IsSetField(Fields.Tags.NewSeqNo))
{
int newSeqNo = sequenceReset.GetInt(Fields.Tags.NewSeqNo);
this.Log.OnEvent("Received SequenceReset FROM: " + state_.GetNextTargetMsgSeqNum() + " TO: " + newSeqNo);
if (newSeqNo > state_.GetNextTargetMsgSeqNum())
{
state_.SetNextTargetMsgSeqNum(newSeqNo);
}
else
{
if (newSeqNo < state_.GetNextTargetMsgSeqNum())
GenerateReject(sequenceReset, FixValues.SessionRejectReason.VALUE_IS_INCORRECT);
}
}
}
示例3: NextLogon
protected void NextLogon(Message logon)
{
Fields.ResetSeqNumFlag resetSeqNumFlag = new Fields.ResetSeqNumFlag(false);
if (logon.IsSetField(resetSeqNumFlag))
logon.GetField(resetSeqNumFlag);
state_.ReceivedReset = resetSeqNumFlag.Obj;
if (!state_.IsInitiator && this.ResetOnLogon)
state_.Reset();
if (!Verify(logon, false, true))
return;
if (!IsGoodTime(logon))
{
this.Log.OnEvent("Logon had bad sending time");
Disconnect("bad sending time");
return;
}
state_.ReceivedLogon = true;
this.Log.OnEvent("Received logon");
if (!state_.IsInitiator)
{
int heartBtInt = logon.GetInt(Fields.Tags.HeartBtInt);
state_.HeartBtInt = heartBtInt;
GenerateLogon(logon);
this.Log.OnEvent("Responding to logon request");
}
state_.SentReset = false;
state_.ReceivedReset = false;
int msgSeqNum = logon.Header.GetInt(Fields.Tags.MsgSeqNum);
if (IsTargetTooHigh(msgSeqNum) && !resetSeqNumFlag.Obj)
{
DoTargetTooHigh(logon, msgSeqNum);
}
else
{
state_.IncrNextTargetMsgSeqNum();
NextQueued();
}
if (this.IsLoggedOn)
this.Application.OnLogon(this.SessionID);
}
示例4: SetFieldsTest
public void SetFieldsTest()
{
var message = new Message();
var allocId = new AllocID("123456");
var allocAccount = new AllocAccount("QuickFixAccount");
var allocAccountType = new AllocAccountType(AllocAccountType.HOUSE_TRADER);
message.SetFields(new IField[] { allocAccount, allocAccountType, allocId });
Assert.AreEqual(true, message.IsSetField(Tags.AllocID));
Assert.AreEqual("123456", message.GetField(Tags.AllocID));
Assert.AreEqual(true, message.IsSetField(Tags.AllocAccount));
Assert.AreEqual("QuickFixAccount", message.GetField(Tags.AllocAccount));
Assert.AreEqual(true, message.IsSetField(Tags.AllocAccountType));
Assert.AreEqual(AllocAccountType.HOUSE_TRADER, message.GetInt(Tags.AllocAccountType));
}
示例5: NextLogon
protected void NextLogon(Message logon)
{
Fields.ResetSeqNumFlag resetSeqNumFlag = new Fields.ResetSeqNumFlag(false);
if (logon.IsSetField(resetSeqNumFlag))
logon.GetField(resetSeqNumFlag);
state_.ReceivedReset = resetSeqNumFlag.Obj;
if (state_.ReceivedReset)
{
this.Log.OnEvent("Sequence numbers reset due to ResetSeqNumFlag=Y");
if (!state_.SentReset)
{
state_.Reset("Reset requested by counterparty");
}
}
if (!state_.IsInitiator && this.ResetOnLogon)
state_.Reset("ResetOnLogon");
if (this.RefreshOnLogon)
Refresh();
if (!Verify(logon, false, true))
return;
if (!IsGoodTime(logon))
{
this.Log.OnEvent("Logon has bad sending time");
Disconnect("bad sending time");
return;
}
state_.ReceivedLogon = true;
this.Log.OnEvent("Received logon");
if (!state_.IsInitiator)
{
int heartBtInt = logon.GetInt(Fields.Tags.HeartBtInt);
state_.HeartBtInt = (int)Math.Floor(heartBtInt / (double)2);
GenerateLogon(logon);
this.Log.OnEvent("Responding to logon request");
}
state_.SentReset = false;
state_.ReceivedReset = false;
int msgSeqNum = logon.Header.GetInt(Fields.Tags.MsgSeqNum);
if (IsTargetTooHigh(msgSeqNum) && !resetSeqNumFlag.Obj)
{
DoTargetTooHigh(logon, msgSeqNum);
}
else
{
state_.IncrNextTargetMsgSeqNum();
}
if (this.IsLoggedOn)
this.Application.OnLogon(this.SessionID);
}
示例6: SendRaw
protected bool SendRaw(Message message, int seqNum)
{
lock (sync_)
{
string msgType = message.Header.GetField(Fields.Tags.MsgType);
if (msgType == Fields.MsgType.HEARTBEAT)
{
_log.Info("Sending heartbeat inside sendraw");
}
InitializeHeader(message, seqNum);
if (Message.IsAdminMsgType(msgType))
{
this.Application.ToAdmin(message, this.SessionID);
if (MsgType.LOGON.Equals(msgType) && !state_.ReceivedReset)
{
Fields.ResetSeqNumFlag resetSeqNumFlag = new QuickFix.Fields.ResetSeqNumFlag(false);
if (message.IsSetField(resetSeqNumFlag))
message.GetField(resetSeqNumFlag);
if (resetSeqNumFlag.getValue())
{
state_.Reset("ResetSeqNumFlag");
message.Header.SetField(new Fields.MsgSeqNum(state_.GetNextSenderMsgSeqNum()));
}
state_.SentReset = resetSeqNumFlag.Obj;
}
}
else
{
try
{
this.Application.ToApp(message, this.SessionID);
}
catch (DoNotSend)
{
return false;
}
}
string messageString = message.ToString();
if (0 == seqNum)
Persist(message, messageString);
if (msgType == Fields.MsgType.HEARTBEAT)
{
_log.Info("about to send that heartbeat for real");
}
return Send(messageString, msgType == Fields.MsgType.HEARTBEAT);
}
}