示例#1
0
 public UdpRequestResolver(IPEndPoint dns, int timeout = 5000, IPEndPoint localEndPoint = default(IPEndPoint))
 {
     this.dns           = dns;
     this.fallback      = new NullRequestResolver();
     this.timeout       = timeout;
     this.localEndPoint = localEndPoint;
 }
 public RecursiveRequestResolver(IRequestResolver innerResolver)
 {
     if (innerResolver == null)
     {
         throw new ArgumentNullException(nameof(innerResolver));
     }
     this.innerResolver = innerResolver;
 }
示例#3
0
        private async Task <IResponse> SafeResolve(IRequestResolver resolver, IRequest request, CancellationToken cancellationToken)
        {
            // Ensure that we create a state machine, so we don't synchronously throw an exception
            await Task.Yield();

            try {
                return(await resolver.Resolve(request, cancellationToken));
            }
            catch {
                throw;
            }
        }
示例#4
0
        private async static Task Create(IRequestResolver requestResolver, Func <DnsServer, Task> action)
        {
            TaskCompletionSource <object> tcs = new TaskCompletionSource <object>();
            DnsServer server = new DnsServer(requestResolver);

            server.Listening += async() => {
                try {
                    await action(server);

                    tcs.SetResult(null);
                } catch (Exception e) {
                    tcs.SetException(e);
                } finally {
                    server.Dispose();
                }
            };

            await Task.WhenAll(server.Listen(PORT), tcs.Task);
        }
示例#5
0
        /* Request syntax:
         *
         * <tdcs>
         *  <type>memory-monitor</type>
         *  <params>
         *   ...
         *  </params>
         * </tdcs>
         *
         * <tdcs>
         * or
         * <type>status</type><params></params></tdcs>
         */
        public string OnRequest(string request)
        {
            // parse xml
            string      typeString = "";
            string      response   = "";
            string      error      = "";
            XmlDocument xmlDoc     = new XmlDocument(); //* create an xml document object.

            try
            {
                xmlDoc.LoadXml(request);
                //XmlElement rootElement = xmlDoc.GetElementBy ("tdcs");
                XmlNodeList typeElements = xmlDoc.GetElementsByTagName("type");
                if (null == typeElements || 0 == typeElements.Count)
                {
                    throw new Exception("Request has no element type");
                }
                typeString = typeElements[0].InnerText;
                IRequestResolver resolver = mTaskManager.GetRequestResolverByName(typeString);
                if (null == resolver)
                {
                    throw new Exception("Request type has no resolver");
                }

                // resolver
                response = resolver.ProcessRequest(request); // error?
            }
            catch (XmlException ex)
            {
                error   = ex.Message;
                request = "invalid_request";
            }
            catch (Exception ex)
            {
                error   = ex.Message;
                request = "request_handling_error";
            }

            return(BuildResponse(typeString, request, response, error));
        }
示例#6
0
        // returns request resolver by task name
        public IRequestResolver GetRequestResolverByName(string taskType)
        {
            IRequestResolver resolver = null;

            if (taskType == StatusResolver.RESOLVER_NAME)
            {
                resolver = new StatusResolver(this);
            }
            else if (taskType == MemoryMonitorResolver.RESOLVER_NAME)
            {
                resolver = new MemoryMonitorResolver(this);
            }
            else if (taskType == ProcessorMonitorResolver.RESOLVER_NAME)
            {
                resolver = new ProcessorMonitorResolver(this);
            }
            else if (taskType == AppPoolMonitorResolver.RESOLVER_NAME)
            {
                resolver = new AppPoolMonitorResolver(this);
            }
            else if (taskType == ClearFolderResolver.RESOLVER_NAME)
            {
                resolver = new ClearFolderResolver(this);
            }
            else if (taskType == RecycleAppPoolResolver.RESOLVER_NAME)
            {
                resolver = new RecycleAppPoolResolver(this);
            }

            if (null == resolver)
            {
                // if there are no task type, return default resolver
                resolver = new UnknownResolver(this);
            }
            return(resolver);
        }
示例#7
0
 public DnsServer(IRequestResolver resolver)
 {
     this.resolver = resolver;
 }
示例#8
0
 public UdpRequestResolver(IRequestResolver fallback)
 {
     this.fallback = fallback;
 }
示例#9
0
 public ClientRequest(IPAddress ip, int port = DEFAULT_PORT, IRequest request = null, IRequestResolver resolver = null) :
     this(new IPEndPoint(ip, port), request, resolver)
 {
 }
示例#10
0
 public ClientRequest(string ip, int port = DEFAULT_PORT, IRequest request = null, IRequestResolver resolver = null)
     : this(IPAddress.Parse(ip), port, request, resolver)
 {
 }
示例#11
0
 public ClientRequest(IPEndPoint dns, IRequest request = null, IRequestResolver resolver = null)
 {
     this.dns = dns;
     this.request = request == null ? new Request() : new Request(request);
     this.resolver = resolver == null ? new UdpRequestResolver() : resolver;
 }
示例#12
0
 public DnsServer(IRequestResolver resolver)
 {
     _Resolver = resolver;
 }
示例#13
0
 public ClientRequest(IRequestResolver resolver, IRequest request = null)
 {
     this.resolver = resolver;
     this.request  = request == null ? new Request() : new Request(request);
 }
示例#14
0
 public DnsClient(IRequestResolver resolver)
 {
     _Resolver = resolver;
 }
示例#15
0
 public ActionExecutor(IRequestResolver resolver, IModelBindingController modelBindingController)
 {
     _resolver = resolver;
     _modelBindingController = modelBindingController;
 }
示例#16
0
 public DnsClient(IPEndPoint dns, IRequestResolver resolver = null)
 {
     this.dns      = dns;
     this.resolver = resolver == null ? new UdpRequestResolver(new TcpRequestResolver()) : resolver;
 }
示例#17
0
 public AuthFunction(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }
示例#18
0
 public ErrorFunction(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }
示例#19
0
 public HelloWorldFunction(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }
示例#20
0
 public UdpRequestResolver(IPEndPoint dns, IRequestResolver fallback, int timeout = 5000)
 {
     this.dns      = dns;
     this.fallback = fallback;
     this.timeout  = timeout;
 }
 protected SignalRMethodExecutor(IRequestResolver resolver, ExecutionContext executionContext)
 {
     Resolver         = resolver ?? throw new ArgumentNullException(nameof(resolver));
     ExecutionContext = executionContext ?? throw new ArgumentNullException(nameof(executionContext));
 }
示例#22
0
 public UdpRequestResolver(IPEndPoint dns, int timeout = 5000)
 {
     this.dns      = dns;
     this.fallback = new NullRequestResolver();
     this.timeout  = timeout;
 }
 public SignalRInvocationMethodExecutor(IRequestResolver resolver, ExecutionContext executionContext) : base(resolver, executionContext)
 {
 }
示例#24
0
文件: DnsClient.cs 项目: kzu/dns
 public DnsClient(IPEndPoint dns, IRequestResolver resolver = null)
 {
     this.dns = dns;
     this.resolver = resolver == null ? new UdpRequestResolver(new TcpRequestResolver()) : resolver;
 }
示例#25
0
        public static UdpRequestResolver Create(IPEndPoint endpoint, bool tcpFallback = true)
        {
            IRequestResolver fallback = tcpFallback ? new TcpRequestResolver(endpoint) : (IRequestResolver) new NullRequestResolver();

            return(new UdpRequestResolver(endpoint, fallback));
        }
示例#26
0
 public UdpRequestResolver() {
     this.fallback = new NullRequestResolver();
 }
示例#27
0
 public ClientRequest(IPAddress ip, int port = DEFAULT_PORT, IRequest request = null, IRequestResolver resolver = null)
     : this(new IPEndPoint(ip, port), request, resolver)
 {
 }
示例#28
0
 public UdpRequestResolver(IRequestResolver fallback) {
     this.fallback = fallback;
 }
示例#29
0
 public ClientRequest(IPEndPoint dns, IRequest request = null, IRequestResolver resolver = null)
 {
     this.dns      = dns;
     this.request  = request == null ? new Request() : new Request(request);
     this.resolver = resolver == null ? new UdpRequestResolver() : resolver;
 }
示例#30
0
文件: DnsServer.cs 项目: xiaohszx/dns
 public DnsServer(IRequestResolver resolver, string endServer, int port = DEFAULT_PORT) :
     this(resolver, IPAddress.Parse(endServer), port)
 {
 }
示例#31
0
 public ClientRequest(string ip, int port = DEFAULT_PORT, IRequest request = null, IRequestResolver resolver = null) :
     this(IPAddress.Parse(ip), port, request, resolver)
 {
 }
示例#32
0
 public VariablesFunction(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }
示例#33
0
 public UdpRequestResolver()
 {
     this.fallback = new NullRequestResolver();
 }
示例#34
0
 public SignalRConnectMethodExecutor(IRequestResolver resolver, ExecutionContext executionContext) : base(resolver, executionContext)
 {
 }
示例#35
0
 public NoHandlerFunction(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }
示例#36
0
 public BeforeAndAfterEveryRequest(IRequestResolver requestResolver)
 {
     this.requestResolver = requestResolver;
 }