示例#1
0
        internal void InitializeSecondarySocket(Connection connection, IPAddress address, int port)
        {
            connection.ConnectSecondarySocket(address, port);
            InitSecondarySocketCommand command = new InitSecondarySocketCommand(_cache.ClientID);
            DoSendCommand(connection, command, false);
            CommandResponse res = connection.RecieveCommandResponse(connection.SecondaryClientSocket);
            lock (_requestTable.SyncRoot)
            {
                _requestTable.Remove(command.RequestId);
            }

            if (_perfStatsColl2 != null) _perfStatsColl2.DecrementRequestQueueSizeStats();

            if (res != null) res.ParseResponse();
        }
示例#2
0
        internal void InitializeCache(Connection connection, IPAddress address, int port, bool balanceNodes)
        {
            InitCommand command = new InitCommand(_cache.ClientID, _cacheId, connection.GetClientLocalIP());
            Request request = new Request(false, _operationTimeout);
            request.AddCommand(connection.ServerAddress, command);
            ExecuteRequest(request, connection, false, false);
            CommandResponse res = connection.RecieveCommandResponse();

            switch (res.CacheType)
            {
                case "partitioned-server":
                    this._balanceNode = false;
                    break;
                case "local-cache":
                    this._balanceNode = false;
                    this._importHashmap = false;
                    break;
                case "replicated-server":
                    this._importHashmap = false;
                    break;
            }
            lock (_requestTable.SyncRoot)
            {
                _requestTable.Remove(request.RequestId);
            }

            if (_perfStatsColl2 != null) _perfStatsColl2.DecrementRequestQueueSizeStats();

            if (res != null)
                res.ParseResponse();
        }
示例#3
0
        private void GetServerMapping(Connection connection, bool initialRequest)
        {
            GetServerMappingCommand command = new GetServerMappingCommand();
            CommandResponse serverMapRes = null;
            Request request = CreateRequest(command);

            try
            {
                if (initialRequest)
                {

                    ExecuteRequest(request, connection, false, false);
                    serverMapRes = connection.RecieveCommandResponse();
                    lock (_requestTable.SyncRoot)
                    {
                        _requestTable.Remove(request.RequestId);
                    }

                    if (_perfStatsColl2 != null) _perfStatsColl2.DecrementRequestQueueSizeStats();

                }
                else
                {
                    ExecuteRequest(request);
                    serverMapRes = request.Response;
                }

                if (serverMapRes != null)
                {
                    serverMapRes.ParseResponse();
                }
                _clientConfig.AddMappedServers(serverMapRes.ServerMappingList);

            }
            catch (Exception exp)
            {
                if (_logger.IsDetailedLogsEnabled)
                {
                    _logger.NCacheLog.Debug(exp.Message);
                }
            }
        }
示例#4
0
        private CommandResponse IsOptimalServer(Connection connection, IPAddress connectedServerAddress, int port)
        {
            GetOptimalServerCommand command = new GetOptimalServerCommand(_cacheId);
            Request request = new Request(false, _operationTimeout);
            request.AddCommand(connection.ServerAddress, command);

            ExecuteRequest(request, connection, false, false);
            CommandResponse balanceNodeRes = connection.RecieveCommandResponse();

            lock (_requestTable.SyncRoot)
            {
                _requestTable.Remove(request.RequestId);
            }

            if (_perfStatsColl2 != null) _perfStatsColl2.DecrementRequestQueueSizeStats();

            if (balanceNodeRes != null)
                balanceNodeRes.ParseResponse();

            return balanceNodeRes;
        }
示例#5
0
        private Dictionary<string, int> GetRunningServers(Connection conn, IPAddress coonectedServerAddress, int port)
        {
            GetRunningServersCommand command = new GetRunningServersCommand(_cacheId);
            Request request = new Request(false, _operationTimeout);
            request.AddCommand(conn.ServerAddress, command);

            ExecuteRequest(request, conn, false, false);
            CommandResponse runningServers = conn.RecieveCommandResponse();

            lock (_requestTable.SyncRoot)
            {
                _requestTable.Remove(request.RequestId);
            }

            if (_perfStatsColl2 != null) _perfStatsColl2.DecrementRequestQueueSizeStats();

            if (runningServers != null)
            {
                runningServers.ParseResponse();
                return runningServers.RunningServer;
            }
            return null;
        }