Exemple #1
0
        public void MessageContent(ref object content, object value, DirectionType _direction)
        {
            DirectionType direction = _direction;
            object        _content  = value;

            if (_content != null)
            {
                if (direction == DirectionType.Receive)
                {
                    Type[] ifaces = _content.GetType().GetInterfaces();
                    if (ifaces.Contains(typeof(IFigureFormatter)))
                    {
                        object[] messages_ = ((IFigureFormatter)value).GetMessage();
                        if (messages_ != null)
                        {
                            int length = messages_.Length;
                            for (int i = 0; i < length; i++)
                            {
                                IFigureFormatter message = ((IFigureFormatter[])messages_)[i];
                                IFigureFormatter head    = (IFigureFormatter)((IFigureFormatter[])messages_)[i].GetHeader();
                                message.SerialCount   = head.SerialCount;
                                message.DeserialCount = head.DeserialCount;
                            }

                            _content = messages_;
                        }
                    }
                }
            }
            content = _content;
        }
Exemple #2
0
 public DealOperation(object dealContent)
 {
     site      = ServiceSite.Server;
     direction = DirectionType.None;
     state     = ((ISerialNumber)dealContent).FlagsBlock;
     content   = (IFigureFormatter)dealContent;
 }
        private void SrvRecMsg(ref object array, int readposition)
        {
            object           serialCardsObj   = ((object[])transaction.MessageReceived.Content)[readposition];
            object           deserialCardsObj = ((IFigureFormatter)serialCardsObj).Deserialize(ref array);
            IFigureFormatter deserialCards    = (IFigureFormatter)deserialCardsObj;

            if (deserialCards.DeserialCount <= deserialCards.ProgressCount || deserialCards.ProgressCount == 0)
            {
                transaction.Context.ObjectsLeft--;
                deserialCards.ProgressCount = 0;
            }
            array = null;
        }
Exemple #4
0
        public void HeaderContent(object content, object value, DirectionType _direction)
        {
            DirectionType direction = _direction;
            object        _content  = value;

            if (_content != null)
            {
                Type[] ifaces = _content.GetType().GetInterfaces();
                if (ifaces.Contains(typeof(IFigureFormatter)))
                {
                    transaction.MyHeader.Context.ContentType = _content.GetType();

                    if (direction == DirectionType.Send)
                    {
                        _content = ((IFigureFormatter)value).GetHeader();
                    }

                    object[] messages_ = null;
                    if (treatment.Assign(_content, direction, out messages_)                               // Dealer Treatment assign with handle its only place where its called and mutate data.
                        )
                    {
                        if (messages_.Length > 0)
                        {
                            context.ObjectsCount = messages_.Length;
                            for (int i = 0; i < context.ObjectsCount; i++)
                            {
                                IFigureFormatter message = ((IFigureFormatter[])messages_)[i];
                                IFigureFormatter head    = (IFigureFormatter)((IFigureFormatter[])messages_)[i].GetHeader();
                                message.SerialCount = message.ItemsCount;
                                head.SerialCount    = message.ItemsCount;
                            }

                            if (direction == DirectionType.Send)
                            {
                                transaction.MyMessage.Content = messages_;
                            }
                            else
                            {
                                transaction.MyMessage.Content = ((IFigureFormatter)_content).GetHeader();
                            }
                        }
                    }
                }
            }
            content = _content;
        }
        private void CltRecMsg(ref object array, int readposition)
        {
            object           serialCardsObj = ((object[])transaction.MessageReceived.Content)[readposition];
            IFigureFormatter serialCards    = (IFigureFormatter)serialCardsObj;

            //if (serialCards.ProgressCount == 0)
            //    ((ISettings)serialCardsObj).State.withPropagate = false;

            object           deserialCardsObj = serialCards.Deserialize(ref array);
            IFigureFormatter deserialCards    = (IFigureFormatter)deserialCardsObj;

            if (deserialCards.DeserialCount <= deserialCards.ProgressCount || deserialCards.ProgressCount == 0)
            {
                transaction.Context.ObjectsLeft--;
                deserialCards.ProgressCount = 0;
                //((ISettings)deserialCardsObj).State.withPropagate = true;
                //((ISettings)((IDeck<)deserialCardsObj).Deck64).State.Emulate(((ISettings)deserialCardsObj).State, true, true);
                //((ISettings)((ICards)deserialCardsObj).Deck64).State.Synced = true;
            }
            array = null;
        }