пятница, 30 августа 2019 г.
вторник, 27 августа 2019 г.
Process in TradeTerminals on the ProcessTask
ProcessTask:
public sealed partial class QuikTradeTerminal
{
public bool IsProcessTaskInUse { get; set; }
[XmlIgnore]
public ProcessTask<IEventArgs1> ProcessTask { get; private set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs1>
{
Parent = this,
TimeInterval = 1000,
IsEveryItemPushProcessing = true,
ItemProcessingAction = ItemProcessingAction,
IdlingCycleAction = ProcessTaskIdleAction
};
ProcessTask.Init();
Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
public void Start()
{
SetupProcessTask();
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
// ************************************************
// ProcessTask Actions
private void ItemProcessingAction(IEventArgs1 args)
{
try
{
args.ProcessingAction(args);
}
catch (Exception e)
{
SendException(e);
}
}
// AdditionalWorks in IdlingCycleAction
private void ProcessTaskIdleAction()
{
TradeResolveProcess2();
OrderResolveProcess();
}
}
Process in TradeTerminal to linear Execution:
1. SendTransaction From Queue:
public void SendTransaction(IQuikTransaction t)
{
if (t == null)
return;
if (IsProcessTaskInUse)
{
var eargs = new EventArgs1
{
Process = "QuikTransactionsProcess",
Category = "QuikTransactions",
Entity = "TransactionSend",
Operation = "AddOrUpdate",
Object = t,
ProcessingAction = SendTransactionFromQueue
};
ProcessTask?.EnQueue(eargs);
}
else
TransactionQueue.Push(t);
}
2. Clear Transactions From Queue when Terminal is NOT_CONNECTED
public void ClearTransactionFromQueue()
{
if (IsProcessTaskInUse)
{
var eargs = new EventArgs1
{
Process = "QuikTransactionsProcess",
Category = "QuikTransactions",
Entity = "TransactionClear",
Operation = "AddOrUpdate",
ProcessingAction = ClearOrderTransactionQueue3
};
ProcessTask?.EnQueue(eargs);
}
else
ClearOrderTransactionQueue3(null);
}
public sealed partial class QuikTradeTerminal
{
public bool IsProcessTaskInUse { get; set; }
[XmlIgnore]
public ProcessTask<IEventArgs1> ProcessTask { get; private set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs1>
{
Parent = this,
TimeInterval = 1000,
IsEveryItemPushProcessing = true,
ItemProcessingAction = ItemProcessingAction,
IdlingCycleAction = ProcessTaskIdleAction
};
ProcessTask.Init();
Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
public void Start()
{
SetupProcessTask();
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
// ************************************************
// ProcessTask Actions
private void ItemProcessingAction(IEventArgs1 args)
{
try
{
args.ProcessingAction(args);
}
catch (Exception e)
{
SendException(e);
}
}
// AdditionalWorks in IdlingCycleAction
private void ProcessTaskIdleAction()
{
TradeResolveProcess2();
OrderResolveProcess();
}
}
Process in TradeTerminal to linear Execution:
1. SendTransaction From Queue:
public void SendTransaction(IQuikTransaction t)
{
if (t == null)
return;
if (IsProcessTaskInUse)
{
var eargs = new EventArgs1
{
Process = "QuikTransactionsProcess",
Category = "QuikTransactions",
Entity = "TransactionSend",
Operation = "AddOrUpdate",
Object = t,
ProcessingAction = SendTransactionFromQueue
};
ProcessTask?.EnQueue(eargs);
}
else
TransactionQueue.Push(t);
}
2. Clear Transactions From Queue when Terminal is NOT_CONNECTED
public void ClearTransactionFromQueue()
{
if (IsProcessTaskInUse)
{
var eargs = new EventArgs1
{
Process = "QuikTransactionsProcess",
Category = "QuikTransactions",
Entity = "TransactionClear",
Operation = "AddOrUpdate",
ProcessingAction = ClearOrderTransactionQueue3
};
ProcessTask?.EnQueue(eargs);
}
else
ClearOrderTransactionQueue3(null);
}
Подписаться на:
Комментарии (Atom)
