private static void CreateLeaseProviderInstances(IEnumerable <string> instances, IMessageHub messageHub, byte[] partition) { if (instances.Any()) { var results = new List <CreateLeaseProviderInstanceResponseMessage>(); foreach (var instance in instances) { var message = Message.CreateFlowStartMessage(new CreateLeaseProviderInstanceRequestMessage { Instance = instance, Partition = partition }); //message.TraceOptions = MessageTraceOptions.Routing; var callback = new CallbackPoint(MessageIdentifier.Create <CreateLeaseProviderInstanceResponseMessage>(partition)); using (var promise = messageHub.Send(message, callback)) { results.Add(promise.GetResponse().Result.GetPayload <CreateLeaseProviderInstanceResponseMessage>()); } } var activationWaitTime = results.Max(r => r.ActivationWaitTime); Console.WriteLine($"Waiting {activationWaitTime.TotalSeconds} sec before LeaseProvider Instances are active..."); if (activationWaitTime > TimeSpan.Zero) { Thread.Sleep(activationWaitTime); } } }
/// <summary> /// send(join)i;j , j ∈ I - {i} /// </summary> private void OutSend() { preJoin.Waitable.WaitOne(); foreach (var node in hints.Get()) { messageHub.Send(node, new JoinRwMessage(i)); } }
/// <summary> /// send(world; v; t; cm; snder-phase; rcver-phasei)i;j /// </summary> private void OutSend() { while (true) { preOutSend.Waitable.WaitOne(); foreach (var node in world.Values) { messageHub.Send(creator, new GossipMessage(creator, new Gossip { Value = value, Tag = tag, World = world.Values.ToArray(), SenderPhase = localPhase, ReceiverPhase = phaseVector[node], Configurations = configMap }, serializer)); } } }