public void Initialize() { //Stop-Service -DisplayName 'Docker Desktop Service' //Stop-Service -DisplayName 'Internet Connection Sharing (ICS)' var ActivatorMiddlewareResolver = new ActivatorMiddlewareResolver(); var ProxyResponsibilityChain = new ServerResponsibilityChain(ActivatorMiddlewareResolver); Server = new SimpleServer(ProxyResponsibilityChain); }
public async Task RunAsync() { var ActivatorMiddlewareResolver = new ActivatorMiddlewareResolver(); var ProxyResponsibilityChain = new ServerResponsibilityChain(ActivatorMiddlewareResolver); ResponseMessage = await ProxyResponsibilityChain.Execute(RequestMessage); Assert.AreEqual(ID, ResponseMessage.ID); Assert.IsNotNull(ResponseMessage.Questions); Assert.IsNotNull(ResponseMessage.Answers); Assert.IsInstanceOfType(ResponseMessage.Answers.First().Record, typeof(DNS.Records.A)); }
public static IPipelineBuilder UseMiddleware( this IPipelineBuilder pipeline, [DynamicallyAccessedMembers(MiddlewareAccessibility)] Type middleware) { if (!typeof(IMiddleware).IsAssignableFrom(middleware)) { throw new ArgumentException($"The middleware type must implement \"{typeof(IMiddleware)}\"."); } var methods = middleware.GetMethods(BindingFlags.Instance | BindingFlags.Public); MethodInfo invokeMethod = null; foreach (var method in methods) { if (string.Equals(method.Name, InvokeAsyncMethodName, StringComparison.Ordinal)) { if (method == null) { throw new InvalidOperationException(InvokeAsyncMethodName); } invokeMethod = method; break; } } if (invokeMethod is null) { throw new InvalidOperationException("No suitable method matched ."); } if (!typeof(Task).IsAssignableFrom(invokeMethod.ReturnType)) { throw new InvalidOperationException($"The method is not an awaitable method { nameof(Task) } !"); } var parameters = invokeMethod.GetParameters(); if (parameters.Length == 0 || parameters[0].ParameterType != typeof(BaseContext)) { throw new InvalidOperationException($" The method parameter does not contain an { nameof(BaseContext) } type parameter !"); } return(pipeline.Use(((IMiddleware)ActivatorMiddlewareResolver.Resolve(middleware)))); }
static async Task Main(string[] args) { try { var ActivatorMiddlewareResolver = new ActivatorMiddlewareResolver(); var ServerResponsibilityChain = new ServerResponsibilityChain(ActivatorMiddlewareResolver); var Server = new ProxyServer(ServerResponsibilityChain); Server.Started += Server_Started; Server.Requested += Server_Requested; Server.Resolved += Server_Resolved; Server.Responded += Server_Responded; Server.Error += Server_Error; Server.Stopped += Server_Stopped; await Server.StartAsync(new CancellationToken()); Console.ReadLine(); } catch (Exception e) { Log.Fatal(e, "Server Died"); Console.ReadLine(); } }