示例#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));
        }
        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));
            }
        }