public void OnNext(byte[] data, long sequence, bool endOfBatch)
        {
            object getObject = StreamConversion.ByteArrayToObject(data);

            if (getObject is Order)
            {
                _receviedOrder = getObject as Order;
            }
            if (getObject is Trade)
            {
                _receivedTrade = getObject as Trade;
            }
            if (getObject is LimitOrderBook)
            {
                _receivedLimitOrderBook = getObject as LimitOrderBook;
            }
            if (getObject is Depth)
            {
                _receivedDepth = getObject as Depth;
            }
            if (getObject is BBO)
            {
                _receivedBbo = getObject as BBO;
            }
        }
示例#2
0
 public static void Publish(object obj)
 {
     byte[] received = StreamConversion.ObjectToByteArray(obj);
     _publisher.PublishEvent((entry, sequenceNo) =>
     {
         //copy byte to diruptor ring byte
         Buffer.BlockCopy(received, 0, entry, 0, received.Length);
         return(entry);
     });
 }
示例#3
0
 /// <summary>
 /// Deep copy
 /// </summary>
 /// <returns></returns>
 public object Clone()
 {
     // using (MemoryStream stream = new MemoryStream())
     //{
     if (this.GetType().IsSerializable)
     {
         return(StreamConversion.ByteArrayToObject(StreamConversion.ObjectToByteArray(this)));
     }
     return(null);
     // }
 }
示例#4
0
 public void OnNext(byte[] data, long sequence, bool endOfBatch)
 {
     try
     {
         object obj = StreamConversion.ByteArrayToObject(data);
         _persistRepository.AddUpdate(obj);
     }
     catch (Exception exception)
     {
         Logger.Error(exception, _type.FullName, "OnNext");
     }
 }
        /// <summary>
        /// Event handler for the LimitOrderBook changed event published by the output disruptor
        /// </summary>
        /// <param name="data"></param>
        /// <param name="sequence"></param>
        /// <param name="endOfBatch"></param>
        public void OnNext(byte[] data, long sequence, bool endOfBatch)
        {
            object getObject = StreamConversion.ByteArrayToObject(data);

            if (getObject is LimitOrderBook)
            {
                this.OnOrderBookChanged(getObject as LimitOrderBook);
            }
            else
            {
                throw new FormatException("Expected a type of CoinExchange.TradesDomain.Model.OrderMatchingEngine.LimitOrderBook but was " + getObject.GetType());
            }
        }
 /// <summary>
 /// Save Exchange snapshot
 /// </summary>
 /// <param name="exchangeEssentials"></param>
 public void SaveSnapshot(ExchangeEssentialsList exchangeEssentials)
 {
     if (_eventStore == Constants.OUTPUT_EVENT_STORE)
     {
         try
         {
             _store.Advanced.AddSnapshot(new Snapshot(_streamId, _snaphost++,
                                                      StreamConversion.ObjectToByteArray(exchangeEssentials)));
         }
         catch (Exception exception)
         {
             if (Log.IsErrorEnabled)
             {
                 Log.Error("Snapshot Saving error:", exception);
             }
         }
     }
 }
        /// <summary>
        /// Load last snaphost
        /// </summary>
        /// <returns></returns>
        public ExchangeEssentialsList LoadLastSnapshot()
        {
            Snapshot snapshot   = null;
            var      initialize = _store.Advanced.GetFrom(Constants.LastSnapshotSearch).GroupBy(i => i.StreamId).Select(g => g.First()).ToList();

            for (int i = 0; i < initialize.Count; i++)
            {
                snapshot = _store.Advanced.GetSnapshot(initialize[i].StreamId, int.MaxValue);
            }
            _lastSnaphot = snapshot;
            if (snapshot != null)
            {
                JObject jObject = JObject.Parse(snapshot.Payload.ToString());
                byte[]  array   = jObject["$value"].ToObject <byte[]>();
                object  list    = StreamConversion.ByteArrayToObject(array);
                ExchangeEssentialsList exchangeEssentialsList = list as ExchangeEssentialsList;
                _loadFrom = exchangeEssentialsList.LastSnapshotDateTime;
                return(exchangeEssentialsList);
            }
            return(null);
        }