/// <summary>
 /// Initializes a new instance of the <see cref="DealOperation"/> class.
 /// </summary>
 /// <param name="dealContent">The dealContent<see cref="object"/>.</param>
 public DealOperation(object dealContent)
 {
     site      = ServiceSite.Server;
     direction = DirectionType.None;
     state     = ((ISerialNumber)dealContent).FlagsBlock;
     content   = (ISerialFormatter)dealContent;
 }
        /// <summary>
        /// The MessageContent.
        /// </summary>
        /// <param name="content">The content<see cref="object"/>.</param>
        /// <param name="value">The value<see cref="object"/>.</param>
        /// <param name="_direction">The _direction<see cref="DirectionType"/>.</param>
        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(ISerialFormatter)))
                    {
                        object[] messages_ = ((ISerialFormatter)value).GetMessage();
                        if (messages_ != null)
                        {
                            int length = messages_.Length;
                            for (int i = 0; i < length; i++)
                            {
                                ISerialFormatter message = ((ISerialFormatter[])messages_)[i];
                                ISerialFormatter head    = (ISerialFormatter)((ISerialFormatter[])messages_)[i].GetHeader();
                                message.SerialCount   = head.SerialCount;
                                message.DeserialCount = head.DeserialCount;
                            }

                            _content = messages_;
                        }
                    }
                }
            }
            content = _content;
        }
Exemple #3
0
        /// <summary>
        /// The SrvRecMsg.
        /// </summary>
        /// <param name="buffer">The buffer<see cref="ISerialBuffer"/>.</param>
        private void SrvRecMsg(ISerialBuffer buffer)
        {
            object           serialCardsObj   = ((object[])transaction.MessageReceived.Content)[buffer.DeserialBlockId];
            object           deserialCardsObj = ((ISerialFormatter)serialCardsObj).Deserialize(buffer);
            ISerialFormatter deserialCards    = (ISerialFormatter)deserialCardsObj;

            if (deserialCards.DeserialCount <= deserialCards.ProgressCount || deserialCards.ProgressCount == 0)
            {
                transaction.Context.ObjectsLeft--;
                deserialCards.ProgressCount = 0;
            }
        }
        /// <summary>
        /// The HeaderContent.
        /// </summary>
        /// <param name="content">The content<see cref="object"/>.</param>
        /// <param name="value">The value<see cref="object"/>.</param>
        /// <param name="_direction">The _direction<see cref="DirectionType"/>.</param>
        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(ISerialFormatter)))
                {
                    transaction.MyHeader.Context.ContentType = _content.GetType();

                    if (direction == DirectionType.Send)
                    {
                        _content = ((ISerialFormatter)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++)
                            {
                                ISerialFormatter message = ((ISerialFormatter[])messages_)[i];
                                ISerialFormatter head    = (ISerialFormatter)((ISerialFormatter[])messages_)[i].GetHeader();
                                message.SerialCount = message.ItemsCount;
                                head.SerialCount    = message.ItemsCount;
                            }

                            if (direction == DirectionType.Send)
                            {
                                transaction.MyMessage.Content = messages_;
                            }
                            else
                            {
                                transaction.MyMessage.Content = ((ISerialFormatter)_content).GetHeader();
                            }
                        }
                    }
                }
            }
            content = _content;
        }