public void Purge() { ConnectionState[] values = null; connectionsLock.ReadUpgradable(delegate { values = new ConnectionState[connections.Count]; connections.Values.CopyTo(values, 0); connectionsLock.Write(delegate { connections.Clear(); ZeroCount(); }); }); foreach (var state in values) { try { Close(state); } catch (Exception ex) { if (SocketServer.log.IsErrorEnabled) { SocketServer.log.ErrorFormat("Exception closing socket during shutdown: {0}", ex.ToString()); } } } }
private void AddKeySpaceInfo <T>(DataBuffer keySpace) { if (!_allowsDrops) { return; } _keyspaceInfoLock.ReadUpgradable(() => { if (!_keyspaceInfos.ContainsKey(keySpace)) { _keyspaceInfoLock.Write(() => { _keyspaceInfos[keySpace] = KeyspaceInfo.Create <T>(); }); } }); }