public void ClientRemoved(PersistentSubscriptionClient client) { var nodeId = client.CorrelationId; client.EventConfirmed -= OnEventRemoved; _state.DisconnectNode(nodeId); }
public void ClientAdded(PersistentSubscriptionClient client) { lock (_stateLock) { var newNode = new Node(client); _state.AddNode(newNode); client.EventConfirmed += OnEventRemoved; } }
public Node(Guid connectionId, Guid nodeId, string host, int port, NodeState state, PersistentSubscriptionClient client, int maximumInFlightMessages, int assignmentCount) { ConnectionId = connectionId; NodeId = nodeId; Host = host; Port = port; State = state; Client = client; MaximumInFlightMessages = maximumInFlightMessages; AssignmentCount = assignmentCount; }
public void ClientRemoved(PersistentSubscriptionClient client) { if (!Clients.Contains(client)) { throw new InvalidOperationException("Only added clients can be removed."); } var temp = Clients.ToList(); var indexOf = temp.IndexOf(client); temp.RemoveAt(indexOf); Clients.Clear(); foreach (var persistentSubscriptionClient in temp) { Clients.Enqueue(persistentSubscriptionClient); } }
public Node(PersistentSubscriptionClient client) { Client = client; ConnectionId = client.ConnectionId; NodeId = client.CorrelationId; var portSplit = client.From.IndexOf(':'); if (portSplit == -1) { Host = client.From; } else { Host = client.From.Substring(0, portSplit); Port = Int32.Parse(client.From.Substring(portSplit + 1)); } State = NodeState.Connected; MaximumInFlightMessages = client.MaximumInFlightMessages; }
private void OnEventRemoved(PersistentSubscriptionClient client, ResolvedEvent ev) { var assignmentId = GetAssignmentId(ev); _state.EventRemoved(client.CorrelationId, assignmentId); }
private static void Main() { var subscription = new PersistentSubscriptionClient(); subscription.Start(); }
public void ClientAdded(PersistentSubscriptionClient client) { Clients.Enqueue(client); }