понедельник, 18 мая 2020 г.

GS.EventHubs

GS.EventHubs.EventHub1.EventHub<TContent> ... where TContent : IHaveContent<TContent>

TypesName: List<string>,  string[]
Test Name: DeSerializeEventHub_LstStr_Test
Test Outcome: Passed
Result StandardOutput:

GS.EventHubs.EventHub1.EventHub<List<string>>
EventHubTypeName: EventHub`1
EventHubTypeFullName: GS.EventHubs.EventHubT1.EventHub`1[[System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
ToString(): GS.EventHubs.EventHubT1.EventHub`1[System.Collections.Generic.List`1[System.String]]

GS.EventHubs.EventHub1.EventHub<string[]>
EventHubTypeName: EventHub`1
EventHubTypeFullName: 
GS.EventHubs.EventHubT1.EventHub`1[[System.String[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
ToString():
GS.EventHubs.EventHubT1.EventHub`1[System.String[]]

Xml
List<string>
<?xml version="1.0" encoding="utf-8"?>
<EventHubOfListOfString>
  <IsEnabled>false</IsEnabled>
  <IsEvlEnabled>false</IsEvlEnabled>
  <Capasity>0</Capasity>
  <CapasityLimit>0</CapasityLimit>
  <IsReversed>false</IsReversed>
  <IsQueueEnabled>false</IsQueueEnabled>
  <IsProcessTaskInUse>false</IsProcessTaskInUse>
  <EventHubItems>
    <EventHubItemOfListOfString>
      <Code>QuikDdeServer.Quotes</Code>
    </EventHubItemOfListOfString>
    <EventHubItemOfListOfString>
      <Code>QuikDdeServer.TickerInfo</Code>
    </EventHubItemOfListOfString>
    <EventHubItemOfListOfString>
      <Code>QuikDdeServer.OptionDesk</Code>
    </EventHubItemOfListOfString>
  </EventHubItems>/>

</EventHubOfListOfString>

string[] <?xml version="1.0" encoding="utf-8"?>
<EventHubOfArrayOfString>
  <IsEnabled>false</IsEnabled>
  <IsEvlEnabled>false</IsEvlEnabled>
  <Capasity>0</Capasity>
  <CapasityLimit>0</CapasityLimit>
  <IsReversed>false</IsReversed>
  <IsQueueEnabled>false</IsQueueEnabled>
  <IsProcessTaskInUse>false</IsProcessTaskInUse>
  <EventHubItems>
    <EventHubItemOfArrayOfString>
      <Code>QuikDdeServer.Quotes</Code>
    </EventHubItemOfArrayOfString>
    <EventHubItemOfArrayOfString>
      <Code>QuikDdeServer.TickerInfo</Code>
    </EventHubItemOfArrayOfString>
    <EventHubItemOfArrayOfString>
      <Code>QuikDdeServer.OptionDesk</Code>
    </EventHubItemOfArrayOfString>
  </EventHubItems>/>
</EventHubOfArrayOfString>

Test Name: EventHub_LstStr_Build_Test
Test Outcome: Passed
Result StandardOutput:

List<string>
GS.EventHubs.EventHubT1.EventHubItem`1[System.Collections.Generic.List`1[System.String]] Code: QuikDdeServer.Quotes Key: QUIKDDESERVER.QUOTES

GS.EventHubs.EventHubT1.EventHubItem`1[System.Collections.Generic.List`1[System.String]] Code: QuikDdeServer.TickerInfo Key: QUIKDDESERVER.TICKERINFO

GS.EventHubs.EventHubT1.EventHubItem`1[System.Collections.Generic.List`1[System.String]] Code: QuikDdeServer.OptionDesk Key: QUIKDDESERVER.OPTIONDESK

string[]
GS.EventHubs.EventHubT1.EventHubItem`1[System.String[]] Code: QuikDdeServer.Quotes Key: QUIKDDESERVER.QUOTES

GS.EventHubs.EventHubT1.EventHubItem`1[System.String[]] Code: QuikDdeServer.TickerInfo Key: QUIKDDESERVER.TICKERINFO

GS.EventHubs.EventHubT1.EventHubItem`1[System.String[]] Code: QuikDdeServer.OptionDesk Key: QUIKDDESERVER.OPTIONDESK

четверг, 14 мая 2020 г.

TcpDdeServer, TcpServer04, DdeServer

TcpServer04

Subscribe for Topics Support:
EventHub = GS.EventHubs.EventHub

TcpDdeServer:
DdeServer
TcpServer04
ProcessTask for DdeServer and TcpServer04 interaction

DdeServer -> ProcessTask -> TcpServer04 with Subscribing  for Topic Available for the TcpClients

Dde Message to TcpServer04 via ProcessTask 
but in case of the same message format ProcessTask Is Not Used.

TcpDdeServer:
DdeServer.TableChangedAction -> IList<string> -> MsgFormatter -> TcpServer04.SendMessage -> Create EventArgs(IList) -> EventHub.Enqueue 
-> TcpClients(Subscribers).SendMessage(TMessage)
f

вторник, 28 апреля 2020 г.

TCP/IP Server Client

Json/String/StringArray
Cmd/Data
Cmprs/AsIs

json/DATA/CMPRS/position/operation/Type/data
XML/DATA/CMPRS/STRATEGY/operation/TYPE/StrategyData

STR/CMD/PING/DateTime
STR/CMD/PONG/DateTime
STR/CMD/CLOSE

STR/DATA/ASIS/Quotes/QuotesData

Data/RouteKey/Entity/Operation/EntityData/Fmt/Doc/Cmprs/Typeof/
Cmd/Ping/DateTeme

Fmt: json,xml,str
Doc/Class/Txt

Data/Tickers/Quotes/New/BidAsk/Str
Data/Tickers/Quotes/New/BidAsk/xml/class/Asis/Tickers.Quote
Data/Tickers/Quotes/New/BidAsk/json/class/Asis/Tickers.Quote

суббота, 18 апреля 2020 г.

Element32

public abstract class Element32<TKey, TEventArgs, TList, TItem> 
                                : Element3<TKey, TEventArgs> , IElement2<TKey, TItem>, IHaveUri
        where TItem : class, IElement1<TKey>, IHaveKey<TKey> //, IHaveInit
        // where TItem : class, IHaveKey<TKey> // , IHaveInit
        where TList : IContainer<TKey, TItem>
        where TEventArgs : IEventArgs
        //where TList : ICollection<TItem>
    {
        [XmlIgnore]
        public TList Collection;

        public IEnumerable<TItem> Items => Collection.Items;

        public string Uri { get; set; }
        public string XPath { get; set; }
        public string UriXPath => Uri + "@" + XPath;


        public override void Init(IEventLog evl)

----------------------------------------------------------------
public class EventHub3 : Element32<string,  IEventArgs, DictionaryContainer<string, EventHubItem3>, EventHubItem3>
    {
        //public bool IsQueueEnabled { get; set; }
        public List<EventHubItem3> EventHubItems { get; set; }

        // protected EventArgsQueue Queue;
        private readonly object _locker;

        public EventHub3()
        {
            EventHubItems = new List<EventHubItem3>();
            Collection = new DictionaryContainer<string, EventHubItem3>();
            //Queue = new EventArgsQueue();
            _locker = new object();
        }
------------------------------------------------------------
public class TaskProcess02 : Element32<string,  IEventArgs1,
        DictionaryContainer<string, UnitOfWork>, UnitOfWork>
    {
        //public bool IsQueueEnabled { get; set; }
        public List<EventHubItem3> EventHubItems { get; set; }

        // protected EventArgsQueue Queue;
        private readonly object _locker;

        protected ProcessTask02 Task { get; set; }

        public TaskProcess02()
        {
            EventHubItems = new List<EventHubItem3>();
            Collection = new DictionaryContainer<string, UnitOfWork>();
            Task = new ProcessTask02 { Parent = this, TimeInterval = 5000 };
            //Queue = new EventArgsQueue();
            _locker = new object();

        }

Element21

Element21

public class TradeStorage21 : Element21<string, ITradeStorage, Containers5.DictionaryContainer<string, ITradeStorage>>, ITradeStorage
    {
        public TradeStorage21()
        {            
            Collection = new DictionaryContainer<string, ITradeStorage>();

        }