Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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));
            }
        }
Ejemplo n.º 3
0
        /// <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));
                }
            }
        }