public Dictionary<string, string> ExecuteOperation(ITransport transport)
 {
     //Defines a new Dictonary which is capable of storing indexed string values with a string index.
     Dictionary<string, string> result;
     //Writes the request header
     HeaderParams param = WriteHeader(transport, STATS_REQUEST);
     transport.Flush();
     ReadHeaderAndValidate(transport, param);
     //reads the number of statistic details sent from server
     int numberOfStats = transport.ReadVInt();
     if (logger.IsTraceEnabled)
         logger.Trace("Number of Stats : " + numberOfStats);
     result = new Dictionary<string, string>();
     //reads all statistics and add them to the 'result' dictionary
     for (int i = 0; i < numberOfStats; i++)
     {
         String statName = transport.ReadString();
         if (logger.IsTraceEnabled)
             logger.Trace("Stat Name Recieved : " + statName);
         String statValue = transport.ReadString();
         if (logger.IsTraceEnabled)
             logger.Trace("Stat ValueRecieved : " + statName);
         result.Add(statName, statValue);
     }
     return result;
 }
Exemple #2
0
        public void ReadNewTopologyAndHash(ITransport transport, HeaderParams param, OperationsFactory opFac, HotRodOperation op)
        {
            int newTopologyId = transport.ReadVInt();
            cacheManager.SetTopologyId(newTopologyId);
            int numOfServers = transport.ReadVInt();

            if (logger.IsTraceEnabled)
            {
                logger.Trace("Topology change request: newTopologyId= " + newTopologyId + " numOfServers= " + numOfServers);
            }
            List<Tuple<string, int>> newServerList = new List<Tuple<string, int>>();
            for (int i = 0; i < numOfServers; i++)
            {
                string host = transport.ReadString(); //int hostIPLength will be read inside the ReadString Method.
                int port = transport.ReadUnsignedShort();
                if (logger.IsTraceEnabled)
                {
                    logger.Trace("Server read : " + host + ":" + port);
                }
                Tuple<string, int> newServer = new Tuple<string, int>(host, port);
                newServerList.Add(newServer);
            }
            transport.GetTransportFactory().UpdateServers(newServerList);
        }