Пример #1
0
 public void WorkerEngine_Multiple_Parallel_WebPages()
 {
     Parallel.For(0, 5, i =>
     {
         using (var workerEngine = new WorkerEngine(new Size(1366, 768), new WindowLoadTrigger(), new VisibleScreen(), _testedPool))
         {
             var image = workerEngine.CaptureUrl("https://google.com");
             TestUtils.SaveBitmap(image, nameof(WorkerEngineTests), nameof(WorkerEngine_Multiple_Parallel_WebPages) + "Parrallel" + i);
         }
     });
 }
Пример #2
0
        public void WorkerEngine_Multiple_Sequential_WebPages()
        {
            for (int i = 0; i < 5; i++)
            {
                using (var workerEngine = new WorkerEngine(new Size(1366, 768), new WindowLoadTrigger(), new VisibleScreen(), _testedPool))
                {
                    var image = workerEngine.CaptureUrl("https://google.com");

                    TestUtils.SaveBitmap(image, nameof(WorkerEngineTests), nameof(WorkerEngine_Multiple_Sequential_WebPages) + "Sequential" + i);
                }
            }
        }
Пример #3
0
        public async Task RunEngineAsync(int port, IBasicHandler basicHandler, ICustomizeHandler handler)
        {
            bossGroup   = new MultithreadEventLoopGroup(1);
            workerGroup = new MultithreadEventLoopGroup();
            MessageDispatcher                 dispatcher   = new MessageDispatcher(this.BasicController, basicHandler, handler);
            List <ChannelServerHandler>       handlers     = new List <ChannelServerHandler>();
            RingObject <ChannelServerHandler> ringHandlers = null;

            if (!useDefaultThread)//此处相比默认handler增加了工作线程,默认工作线程为cpu核心*2
            {
                for (int i = 0; i < workThreadCount; i++)
                {
                    WorkerEngine <RequestInfo> workerEngine = new WorkerEngine <RequestInfo>(3000, 1, dispatcher.Process);
                    workerEngine.Start();
                    handlers.Add(new ChannelServerHandler(this.userManager, workerEngine));
                }
                ringHandlers = new RingObject <ChannelServerHandler>(handlers);
            }
            else
            {
                var cChannelHandlers = new List <ChannelServerHandler>()
                {
                    new ChannelServerHandler(this.userManager, dispatcher)
                };
                ringHandlers = new RingObject <ChannelServerHandler>(cChannelHandlers);
            }
            var bootstrap = new ServerBootstrap();

            bootstrap
            .Group(bossGroup, workerGroup)
            .Channel <TcpServerSocketChannel>()
            //.Option(ChannelOption.SoBacklog, 100)
            //.Handler(new LoggingHandler(LogLevel.INFO))
            .ChildHandler(new ActionChannelInitializer <ISocketChannel>(channel =>
            {
                IChannelPipeline pipeline = channel.Pipeline;
                pipeline.AddLast(OFrameDecoder.NewOFrameDecoder());
                pipeline.AddLast(ringHandlers.GetNext());
            }));

            IChannel bootstrapChannel = await bootstrap.BindAsync(port);
        }
Пример #4
0
 public ChannelServerHandler(UserManager userManager, WorkerEngine <RequestInfo> workerEngine)
 {
     this.UserManager  = userManager;
     this.workerEngine = workerEngine;
 }