public static ServiceStatusTracker GetServiceTracker(IServiceAddress[] managers, IServiceConnector connector) { lock (TrackerCacheMap) { ServiceStatusTracker picked = null; int pickedCount = 0; for (int i = 0; i < managers.Length; ++i) { ServiceStatusTracker g; if (TrackerCacheMap.TryGetValue(managers[i], out g)) { picked = g; ++pickedCount; } } if (picked == null) { picked = new ServiceStatusTracker(connector); for (int i = 0; i < managers.Length; ++i) { TrackerCacheMap[managers[i]] = picked; } } else if (pickedCount != managers.Length) { for (int i = 0; i < managers.Length; ++i) { TrackerCacheMap[managers[i]] = picked; } } return(picked); } }
internal MessageCommunicator(IServiceConnector network, ServiceStatusTracker tracker) { this.network = network; this.tracker = tracker; queueMap = new Dictionary <IServiceAddress, RetryMessageQueue>(); }
internal MessageCommunicator(IServiceConnector network, ServiceStatusTracker tracker) { this.network = network; this.tracker = tracker; queueMap = new Dictionary<IServiceAddress, RetryMessageQueue>(); }
public NetworkTreeSystem(IServiceConnector connector, IServiceAddress[] managerAddresses, INetworkCache networkCache, ServiceStatusTracker serviceTracker) { this.connector = connector; this.managerAddresses = managerAddresses; this.networkCache = networkCache; this.serviceTracker = serviceTracker; failureFloodControl = new Dictionary<IServiceAddress, DateTime>(); failureFloodControlBidc = new Dictionary<IServiceAddress, DateTime>(); }
protected RootService(IServiceConnector connector, IServiceAddress address) { this.connector = connector; this.address = address; lockDb = new Dictionary<string, PathAccess>(128); pathInfoMap = new Dictionary<string, PathInfo>(128); loadPathInfoQueue = new List<PathInfo>(64); serviceTracker = new ServiceStatusTracker(connector); serviceTracker.StatusChange += ServiceTracker_OnStatusChange; }
public HeartbeatThread(ServiceStatusTracker tracker, IServiceConnector connector, List <TrackedService> monitoredServers) { this.tracker = tracker; this.connector = connector; this.monitoredServers = monitoredServers; thread = new Thread(Execute); thread.IsBackground = true; thread.Name = "StatusTracker::Heatbeat"; thread.Start(); }
public void ConnectNetwork() { if (IsConnected) { throw new ApplicationException("Already connected"); } serviceTracker = new ServiceStatusTracker(connector); treeSystem = new NetworkTreeSystem(connector, managerAddresses, localNetworkCache, serviceTracker); treeSystem.NodeHeapMaxSize = MaxTransactionNodeCacheHeapSize; connected = true; }
protected ManagerService(IServiceConnector connector, IServiceAddress address) { this.connector = connector; this.address = address; blockServersMap = new Dictionary<long, BlockServiceInfo>(); blockServersList = new List<BlockServiceInfo>(); rootServersList = new List<RootServiceInfo>(); managerServersList = new List<ManagerServiceInfo>(); rng = new Random(); serviceTracker = new ServiceStatusTracker(connector); blockUpdateTask = new BlockUpdateTask(this); }
internal ReplicatedValueStore(IServiceAddress address, IServiceConnector connector, IDatabase localDb, Object dbWriteLock, ServiceStatusTracker tracker) { this.address = address; this.connector = connector; blockDatabase = localDb; blockDbWriteLock = dbWriteLock; this.tracker = tracker; comm = new MessageCommunicator(connector, tracker); cluster = new List<IServiceAddress>(9); ClearAllMachines(); // Add listener for service status updates, tracker.StatusChange += TrackerOnStatusChange; }
public void Disconnect() { if (connector != null) { try { connector.Close(); } finally { try { serviceTracker.Stop(); } finally { connector = null; serviceTracker = null; treeSystem = null; } connected = false; } } }
public void ConnectNetwork() { if (IsConnected) throw new ApplicationException("Already connected"); serviceTracker = new ServiceStatusTracker(connector); treeSystem = new NetworkTreeSystem(connector, managerAddresses, localNetworkCache, serviceTracker); treeSystem.NodeHeapMaxSize = MaxTransactionNodeCacheHeapSize; connected = true; }
public PathConnection(RootService service, PathInfo pathInfo, IServiceConnector connector, IServiceAddress[] managerServers, INetworkCache cache, ServiceStatusTracker statusTracker) { this.service = service; this.pathInfo = pathInfo; treeSystem = new NetworkTreeSystem(connector, managerServers, cache, statusTracker); }
public static ServiceStatusTracker GetServiceTracker(IServiceAddress[] managers, IServiceConnector connector) { lock (TrackerCacheMap) { ServiceStatusTracker picked = null; int pickedCount = 0; for (int i = 0; i < managers.Length; ++i) { ServiceStatusTracker g; if (TrackerCacheMap.TryGetValue(managers[i], out g)) { picked = g; ++pickedCount; } } if (picked == null) { picked = new ServiceStatusTracker(connector); for (int i = 0; i < managers.Length; ++i) { TrackerCacheMap[managers[i]] = picked; } } else if (pickedCount != managers.Length) { for (int i = 0; i < managers.Length; ++i) { TrackerCacheMap[managers[i]] = picked; } } return picked; } }
public HeartbeatThread(ServiceStatusTracker tracker, IServiceConnector connector, List<TrackedService> monitoredServers) { this.tracker = tracker; this.connector = connector; this.monitoredServers = monitoredServers; thread = new Thread(Execute); thread.IsBackground = true; thread.Name = "StatusTracker::Heatbeat"; thread.Start(); }