示例#1
0
        public override SrvLookup <TService> Start()
        {
            if (RunOnce)
            {
                return(this);
            }

            // Query DNS servers (SRV Required, TXT Optional)
            var tasks = new[] { SrvQuery.Resolve(), TxtQuery.TryResolve() };

            CTask.WhenAll(tasks).ContinueWith(t =>
            {
                try
                {
                    DnsEntries = t.Result[0].Union(t.Result[1]).ToArray();
                    Completion.SetResult(ResultFactory);
                }
                catch (Exception ex)
                {
                    Completion.SetException(ex);
                }
            });

            return(this);
        }
示例#2
0
        public async Task <bool> Unload()
        {
            NavigationStateStatus newStatus = NavigationStateStatus.Unloaded;

            if (IsAlreadyInSameStatus(newStatus))
            {
                return(true);
            }

            bool result = await ScreenState.UnloadState();

            if (result)
            {
                UpdateState(newStatus);
            }

            if (freezingState != null && freezingState.Completion.Task.Status != TaskStatus.RanToCompletion)
            {
                freezingState.Completion.SetResult(true);
                freezingState = null;
            }

            // FIXME: when quit is done a double home navigation is done
            // this causes that the hide/unload of the state is done twice
            // because the stack is not empty, the hide state is the one creating
            // the second home transition
            if (Completion.Task.Status != TaskStatus.RanToCompletion && completeWhenUnload)
            {
                Completion.SetResult(result);
            }

            return(result);
        }
示例#3
0
 public void Complete()
 {
     if (Completion == null)
     {
         return;
     }
     Completion.SetResult(CommandResult);
 }
示例#4
0
        private void OnPeerConnected(PeerConnected data)
        {
            Peer = data.Peer;
            Completion.SetResult(new PeerSession(this));

            DataMap?.Handle(data);

            Sender?.Add(data.Peer, data.Connection);
            Receiver?.StartProcessing(data.Peer, data.Connection);
        }
示例#5
0
 private void StartConsumers(int N)
 {
     _ = Task.WhenAll(
         // Create N consumers
         from i in Enumerable.Range(0, N)
         select Task.Factory.StartNew(
             () => ConsumeAsync(i),
             CancellationToken.None,
             TaskCreationOptions.LongRunning,
             TaskScheduler.Default
             ).Unwrap()
         ).ContinueWith(_ => Completion.SetResult(0));
 }
示例#6
0
        public void Configure(IApplicationBuilder app)
        {
            app.Run(async context =>
            {
                var converter = new TableEntityConverter();

                using (var ms = new MemoryStream(8192))
                {
                    do
                    {
                        using (var tw = new StreamWriter(ms, Encoding.UTF8, 4096, true))
                            using (var csv = new CsvWriter(tw))
                            {
                                foreach (var row in PubSub.Take(1000))
                                {
                                    csv.WriteField(row.PartitionKey);
                                    csv.WriteField(row.RowKey);
                                    csv.WriteField(row.Timestamp.UtcDateTime.ToString("O"));

                                    var data = JsonConvert.SerializeObject(
                                        row.Properties.Select(p => (
                                                                  key:   p.Key,
                                                                  value: p.Value.PropertyAsObject
                                                                  )),
                                        converter
                                        );

                                    csv.WriteField(data);

                                    await csv.NextRecordAsync();
                                }
                            }

                        await context.Response.Body.WriteAsync(ms.ToArray());

                        ms.Position = 0;
                        ms.SetLength(0);
                    }while (PubSub.IsAddingCompleted == false);
                }

                await context.Response.Body.FlushAsync();

                Completion.SetResult(0);
            });
        }
示例#7
0
        public void Start()
        {
            StartMemory();
            StartDataMap();

            StartNetwork();
            StartNegotiator();

            StartSender();
            StartReceiver();
            StartCoordinator();

            StartConnector();
            StartListener();
            StartTrackerGet();

            Completion.SetResult(new SwarmSession(this));
        }
示例#8
0
        public virtual SrvLookup <TService> Start()
        {
            if (RunOnce)
            {
                return(this);
            }

            // Query DNS servers
            SrvQuery.Resolve().ContinueWith(t =>
            {
                try
                {
                    DnsEntries = t.Result;
                    Completion.SetResult(ResultFactory);
                }
                catch (Exception ex)
                {
                    Completion.SetException(ex);
                }
            });

            return(this);
        }
示例#9
0
        public override SrvLookup <TService> Start()
        {
            if (RunOnce)
            {
                return(this);
            }

            // try to resolve - optional
            TxtQuery.TryResolve().ContinueWith(t =>
            {
                try
                {
                    DnsEntries = t.Result;
                    Completion.SetResult(ResultFactory);
                }
                catch (Exception ex)
                {
                    Completion.SetException(ex);
                }
            });

            return(this);
        }
示例#10
0
        public void Start()
        {
            StartTrackerGet();

            Completion.SetResult(new TrackerSession(this));
        }
 public Operation(TResult result) : this()
 {
     Completion.SetResult(result);
 }