Exemplo n.º 1
0
        public static void BuildResponse(IDictionary <string, IList <object> > getResult, int commandVersion, string requestStringId, IList serializedResponse, int commandId, Cache cache)
        {
            Util.KeyPackageBuilder.Cache = cache;
            int  numberOfChunks = 0;
            int  sequenceId     = 1;
            long requestId      = Convert.ToInt64(requestStringId);

            HashVector <string, ClusteredList <List <Message> > > resultInChunks = new HashVector <string, ClusteredList <List <Message> > >();

            foreach (var pair in getResult)
            {
                var messageListChunks = Util.KeyPackageBuilder.GetMessages(pair.Value);

                if (resultInChunks.ContainsKey(pair.Key))
                {
                    ClusteredList <List <Message> > messageList = resultInChunks[pair.Key];
                    messageList.AddRange(messageListChunks);
                }
                else
                {
                    resultInChunks.Add(pair.Key, messageListChunks);
                }

                numberOfChunks += messageListChunks.Count;
            }

            Response response = new Response();

            response.requestId = requestId;
            response.commandID = commandId;

            response.responseType = Response.Type.GET_MESSAGE;
            GetMessageResponse getMessageResponse = null;

            if (resultInChunks.Count == 0)
            {
                getMessageResponse          = new GetMessageResponse();
                response.getMessageResponse = getMessageResponse;
                serializedResponse.Add(Common.Util.ResponseHelper.SerializeResponse(response));
                return;
            }

            getMessageResponse = new GetMessageResponse();
            foreach (var pair in resultInChunks)
            {
                TopicMessages topicMessage = new TopicMessages();
                topicMessage.topic = pair.Key;

                for (int i = 0; i < pair.Value.Count; i++)
                {
                    topicMessage.messageList.AddRange(pair.Value[i]);
                }
                getMessageResponse.topicMessages.Add(topicMessage);
            }

            response.getMessageResponse = getMessageResponse;
            serializedResponse.Add(Common.Util.ResponseHelper.SerializeResponse(response));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes the aggregate hint with multiple dependent hints.
        /// </summary>
        /// <param name="first">expiration hints</param>
        protected void Initialize(ExpirationHint[] hints)
        {
            if (hints == null)
            {
                throw new ArgumentNullException("hints");
            }
            _hints.AddRange(hints);

            for (int i = 0; i < _hints.Count; i++)
            {
                if (!((ExpirationHint)_hints[i]).IsRoutable)
                {
                    this.SetBit(NON_ROUTABLE);
                }
                if (((ExpirationHint)_hints[i]).IsVariant)
                {
                    this.SetBit(IS_VARIANT);
                }
                ((ExpirationHint)_hints[i]).SetExpirationEventSink(this);
            }
        }
Exemplo n.º 3
0
        private StateTxfrInfo TransferBucket(ArrayList bucketIds, bool sparsedBuckets, int expectedTxfrId)
        {
            if (sparsedBuckets)
            {
                return(new StateTxfrInfo(true));
            }
            else
            {
                if (bucketIds != null && bucketIds.Count > 0)
                {
                    if (!(_currentBucket == (int)bucketIds[0]))
                    {
                        if (LoggerManager.Instance.StateXferLogger != null && LoggerManager.Instance.StateXferLogger.IsDebugEnabled)
                        {
                            LoggerManager.Instance.StateXferLogger.Debug(loggingModule + ".TxfrBucket", "bucketid : " + bucketIds[0] + " exptxfrId : " + expectedTxfrId);
                        }

                        _lastTxfrId = expectedTxfrId;
                        //request for a new bucket. get its key list from parent.
                        _currentBucket = (int)bucketIds[0];

                        //these are comment out becoz enable log flag has been passed on Get Keys for bucket call from requesting shard
                        ///bool enableLogs = _transferType == StateTransferType.MOVE_DATA ? true : false;
                        //_keyList = GetKeyList(_currentBucket, enableLogs) as ClusteredArrayList;

                        //bool enableLogs = corresponderIdentity.Type == StateTransferType.INTRA_SHARD ? true : false;


                        //Need to reset data-structures for next bucket transfer
                        _currentBucketkeys.Clear();
                        _sentKeysCount = 0;

                        //STD: Start Bucket Logging if enable
                        if (corresponderIdentity.Type == StateTransferType.INTER_SHARD)
                        {
                            _startedFrom = StartLoggingOnSource(_currentBucket);
                        }

                        _currentBucketkeys.AddRange(GetBucketKeys(_currentBucket)); //.Clone() as ClusteredList<DocumentKey>;

                        _logableBuckets.Add(_currentBucket);

                        //muds:
                        //reset the _lastLogTblCount
                        //_sendLogData = false;
                    }
                    else
                    {
                        if (LoggerManager.Instance.StateXferLogger != null && LoggerManager.Instance.StateXferLogger.IsDebugEnabled)
                        {
                            LoggerManager.Instance.StateXferLogger.Debug(loggingModule + ".TxfrBucket", "bucketid : " + bucketIds[0] + " exptxfrId : " + expectedTxfrId);
                        }

                        //remove all the last sent keys from keylist that has not been
                        //modified during this time.
                        if (_currentBucketkeys != null && expectedTxfrId > _lastTxfrId)
                        {
                            //lock (_currentBucketkeys)
                            //{
                            //    _currentBucketkeys.RemoveRange(0, _sentKeysCount);
                            //    _sentKeysCount = 0;
                            //}
                            _lastTxfrId = expectedTxfrId;
                        }
                    }
                }
                else
                {
                    return(new StateTxfrInfo(new HashVector(), true, 0));//,null);
                }

                //muds:
                //take care that we need to send data in chunks if
                //bucket is too large.
                return(GetData(_currentBucket));
            }
        }
Exemplo n.º 4
0
        public static void BuildResponse(IDictionary <string, IList <object> > getResult, int commandVersion, string requestStringId, IList serializedResponse, int commandId, long requestID, NCache nCache, string _clientID, ClientManager clientManager)

        {
            Util.KeyPackageBuilder.Cache = nCache.Cache;
            int  numberOfChunks = 0;
            int  sequenceId     = 1;
            long requestId      = Convert.ToInt64(requestStringId);

            HashVector <string, ClusteredList <List <Message> > > resultInChunks = new HashVector <string, ClusteredList <List <Message> > >();

            foreach (var pair in getResult)
            {
                var messageListChunks = Util.KeyPackageBuilder.GetMessages(pair.Value, nCache, _clientID);


                if (resultInChunks.ContainsKey(pair.Key))
                {
                    ClusteredList <List <Message> > messageList = resultInChunks[pair.Key];
                    messageList.AddRange(messageListChunks);
                }
                else
                {
                    resultInChunks.Add(pair.Key, messageListChunks);
                }

                numberOfChunks += messageListChunks.Count;
            }

            GetMessageResponse getMessageResponse = new GetMessageResponse();

            if (clientManager.ClientVersion >= 5000)
            {
                Common.Util.ResponseHelper.SetResponse(getMessageResponse, requestID, commandId);
                if (resultInChunks.Count == 0)
                {
                    serializedResponse.Add(Common.Util.ResponseHelper.SerializeResponse(getMessageResponse, Common.Protobuf.Response.Type.GET_MESSAGE));
                    return;
                }

                foreach (var pair in resultInChunks)
                {
                    //response.sequenceId = sequenceId++;
                    TopicMessages topicMessage = new TopicMessages();
                    topicMessage.topic = pair.Key;

                    for (int i = 0; i < pair.Value.Count; i++)
                    {
                        topicMessage.messageList.AddRange(pair.Value[i]);
                    }
                    getMessageResponse.topicMessages.Add(topicMessage);
                }


                serializedResponse.Add(Common.Util.ResponseHelper.SerializeResponse(getMessageResponse, Common.Protobuf.Response.Type.GET_MESSAGE));
            }
            else
            {
                Response response = new Response();
                Common.Util.ResponseHelper.SetResponse(response, requestID, commandId, Common.Protobuf.Response.Type.GET_MESSAGE);
                if (resultInChunks.Count == 0)
                {
                    response.getMessageResponse = getMessageResponse;
                    serializedResponse.Add(Alachisoft.NCache.Common.Util.ResponseHelper.SerializeResponse(response));
                    return;
                }

                foreach (var pair in resultInChunks)
                {
                    //response.sequenceId = sequenceId++;
                    TopicMessages topicMessage = new TopicMessages();
                    topicMessage.topic = pair.Key;

                    for (int i = 0; i < pair.Value.Count; i++)
                    {
                        topicMessage.messageList.AddRange(pair.Value[i]);
                    }
                    getMessageResponse.topicMessages.Add(topicMessage);
                }



                response.getMessageResponse = getMessageResponse;
                serializedResponse.Add(Alachisoft.NCache.Common.Util.ResponseHelper.SerializeResponse(response));
            }
        }