QuikTradeTerminal:
private void SetupProcessTask()
{
ProcessTask = new ProcessTask<IEventArgs1>();
ProcessTask.Init();
ProcessTask.TimeInterval = 1000;
ProcessTask.Parent = this;
ProcessTask.IsEveryItemPushProcessing = true;
// Item Processing
ProcessTask.ItemProcessingAction = args =>
{
try
{
args.Action(args);
}
catch (Exception e)
{
SendException(e);
}
};
}
private void SendReplyEventArgs(TransactionReplyItem tr)
{
var eargs = new EventArgs1
{
Process = "QuikTransactionsProcess",
Category = "QuikTransactions",
Entity = "TransactionReplyItem",
Operation = "AddOrUpdate",
Object = tr,
Action = TransactionReplyResolve
};
ProcessTask?.EnQueue(eargs);
}
public void TransactionReplyResolve(IEventArgs1 args)
{
var trReply = (TransactionReplyItem)args.Object;
var dwTransId = trReply.TransId;
var replyMessage = trReply.ReplyMessage;
var nResult = trReply.Result;
var nExtendedErrorCode = trReply.ExtendedErrorCode;
var nReplyCode = trReply.ReplyCode;
var dOrderNum = trReply.OrderNum;
TransactionReplyEvent?.Invoke((int)nResult, (uint)dwTransId, dOrderNum);
...
Tickers:
public bool IsProcessTaskInUse { get; set; }
[XmlIgnore]
public GS.ProcessTasks.ProcessTask<string> ProcessTask { get; private set; }
private void SetupProcessTask()
{
ProcessTask = new ProcessTask<string>();
ProcessTask.Init();
ProcessTask.TimeInterval = 1000;
ProcessTask.Parent = this;
ProcessTask.IsEveryItemPushProcessing = true;
// ItemS Processing
ProcessTask.ItemsProcessingAction = QuoteStringsProcessing;
}
public void Start()
{
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
public void QuoteStringsProcessing(IEnumerable<string> quotestrings)
{
try
{
foreach (var s in quotestrings)
...
EventLogs:
// Setup in .xml file
public bool IsProcessTaskInUse { get; set; }
private void SetupProcessTask()
{
ProcessTask = new ProcessTask<IEventLogItem>();
ProcessTask.Init(this);
ProcessTask.Parent = this;
ProcessTask.TimeInterval = 1000;
ProcessTask.IsEveryItemPushProcessing = false;
ProcessTask.ItemProcessingAction = evli =>
{
try
{
AddItem(evli);
}
catch (Exception e)
{
SendException(e);
//Evlm2(EvlResult.FATAL, EvlSubject.PROGRAMMING,
// GetType().Name, "ProcessTask", "Exception", e.Message);
}
};
}
[XmlIgnore]
public GS.ProcessTasks.ProcessTask<IEventLogItem> ProcessTask { get; private set; }
public void Start()
{
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
public void Push(IEventLogItem queueItem)
{
if (IsProcessTaskInUse)
ProcessTask.EnQueue(queueItem);
else
EvlQueue.Push(queueItem);
}
EventHub:
public bool IsProcessTaskInUse { get; set; }
private void SetupProcessTask()
{
ProcessTask = new ProcessTask<IEventArgs>();
ProcessTask.Init();
ProcessTask.TimeInterval = 1000;
ProcessTask.Parent = this;
ProcessTask.IsEveryItemPushProcessing = true;
ProcessTask.ItemProcessingAction = FireEventOperation;
}
[XmlIgnore]
public GS.ProcessTasks.ProcessTask<IEventArgs> ProcessTask { get; private set; }
public void Start()
{
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
...
protected void FireEventOperation(Events.IEventArgs args)
{
try
{
var key = args.Key;
var evhubitem = GetByKey(key);
if (evhubitem != null)
evhubitem.FireEvent(args.Sender, args);
...
public void FireEvent(object sender, Events.IEventArgs eventArgs)
{
EventHandler?.Invoke(sender, eventArgs);
...
Комментариев нет:
Отправить комментарий