예제 #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);
        }
        protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)
        {
            var buffer = new byte[1024];

            new Random(42).NextBytes(buffer);

            while (true)
            {
                try
                {
                    await stream.WriteAsync(buffer, cancellationToken);
                }
                catch (Exception ex)
                {
                    Completion.SetException(ex);
                    return;
                }
            }
        }
예제 #3
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);
        }
예제 #4
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);
        }
 public Operation(Exception error) : this()
 {
     Completion.SetException(error);
 }