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)); }
/// <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); } }
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)); } }
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)); } }