Exemplo n.º 1
0
        public AudioClient(DiscordClient client, Server server, int id)
		{
            Id = id;
            _config = client.Config;
            Service = client.Services.Get<AudioService>();
            Config = Service.Config;
            Serializer = client.Serializer;
            _gatewayState = (int)ConnectionState.Disconnected;

            //Logging
            Logger = client.Log.CreateLogger($"AudioClient #{id}");

            //Async
            _taskManager = new TaskManager(Cleanup, false);
            _connectionLock = new AsyncLock();
            CancelToken = new CancellationToken(true);

            //Networking
            if (Config.EnableMultiserver)
            {
                ClientAPI = new JsonRestClient(_config, DiscordConfig.ClientAPIUrl, client.Log.CreateLogger($"ClientAPI #{id}"));
                GatewaySocket = new GatewaySocket(_config, client.Serializer, client.Log.CreateLogger($"Gateway #{id}"));
                GatewaySocket.Connected += (s, e) =>
                {
                    if (_gatewayState == ConnectionState.Connecting)
                        EndGatewayConnect();
                };
            }
            else
                GatewaySocket = client.GatewaySocket;
            GatewaySocket.ReceivedDispatch += (s, e) => OnReceivedEvent(e);
            VoiceSocket = new VoiceSocket(_config, Config, client.Serializer, client.Log.CreateLogger($"Voice #{id}"));
            VoiceSocket.Server = server;
            OutputStream = new OutStream(this);
        }
Exemplo n.º 2
0
		public WebSocket(DiscordClient client, JsonSerializer serializer, Logger logger)
		{
            _client = client;
            Logger = logger;
            _serializer = serializer;

            _lock = new AsyncLock();
            _taskManager = new TaskManager(Cleanup);
            CancelToken = new CancellationToken(true);
			_connectedEvent = new ManualResetEventSlim(false);

#if !DOTNET5_4
			_engine = new WS4NetEngine(client.Config, _taskManager);
#else
			_engine = new BuiltInEngine(client.Config);
#endif
            _engine.BinaryMessage += (s, e) =>
            {
	            using (var compressed = new MemoryStream(e.Data, 2, e.Data.Length - 2))
	            using (var decompressed = new MemoryStream())
	            {
		            using (var zlib = new DeflateStream(compressed, CompressionMode.Decompress))
			            zlib.CopyTo(decompressed);
		            decompressed.Position = 0;
                    using (var reader = new StreamReader(decompressed))
			            ProcessMessage(reader.ReadToEnd()).GetAwaiter().GetResult();
	            }
            };
			_engine.TextMessage += (s, e) => ProcessMessage(e.Message).Wait(); 
		}
Exemplo n.º 3
0
 public void TaskManager_WithCancellation_Test()
 {
    // create manager and add tasks
    var manager = new TaskManager();
    manager.Changed += (s, e) => ReportAction(e);
    manager.Add("task1", ct => Thread.Sleep(500), 100);
    manager.Add("task2", ct => Thread.Sleep(500), 50);
    // stagger start tasks
    manager.Start("task1");
    // schedule a cancellation in 2.5 to 5 seconds
    var cancelTask = Task.Factory.StartNew(() =>
    {
       var random = new Random();
       Thread.Sleep(random.Next(2500, 5000));
       manager.Cancel();
    });
    Thread.Sleep(2000);
    manager.Start("task2");
    Thread.Sleep(3000);
    // stop tasks
    manager.Stop();
    // wait for completion (only in unit tests)
    manager.Wait();
    // wait for completion of cancellation task
    cancelTask.Wait();
 }
Exemplo n.º 4
0
 internal WS4NetEngine(DiscordConfig config, TaskManager taskManager)
 {
     _config = config;
     _taskManager = taskManager;
     _sendQueue = new ConcurrentQueue<string>();
     _waitUntilConnect = new ManualResetEventSlim();
     _waitUntilDisconnect = new ManualResetEventSlim(true);
 }
   public NewSceneProcessor(ComponentWrapperListBuilder componentWrapperListBuilder, TaskManager taskManager, 
 ComponentWrapperList wrappedComponents)
   {
       this.componentWrapperListBuilder = componentWrapperListBuilder;
         this.taskManager = taskManager;
         this.wrappedComponents = wrappedComponents;
         currentScene = new amBXScene { SceneType = eSceneType.Composite };
   }
Exemplo n.º 6
0
        public MandelbrotServer()
        {
            TileWidth = size;
            TileHeight = size;

            MinLevel = 0;
            MaxLevel = 31;

            ServerName = "Mandelbrot";

            // todo number of processors being used is a problem - too small is slow, too big blocks all other threads, including rendering thread, so
            // application stops to respond.
            TaskManagerPolicy policy = new TaskManagerPolicy(1, Environment.ProcessorCount, 1, 0, System.Threading.ThreadPriority.Lowest);
            manager = new TaskManager(policy);
        }
Exemplo n.º 7
0
 public void TaskManager_Test()
 {
    // create manager and add tasks
    var manager = new TaskManager();
    manager.Changed += (s, e) => ReportAction(e);
    manager.Add("task1", ct => Thread.Sleep(500), 100);
    manager.Add("task2", ct => Thread.Sleep(500), 50);
    // stagger start tasks
    manager.Start("task1");
    Thread.Sleep(2000);
    manager.Start("task2");
    Thread.Sleep(3000);
    // stop tasks
    manager.Stop();
    // wait for completion (only in unit tests)
    manager.Wait();
 }
Exemplo n.º 8
0
        public AudioClient(DiscordClient client, Server server, int id)
        {
            Id = id;
            Service = client.GetService<AudioService>();
            Config = Service.Config;
            Serializer = client.Serializer;
            _gatewayState = (int)ConnectionState.Disconnected;

            //Logging
            Logger = client.Log.CreateLogger($"AudioClient #{id}");

            //Async
            _taskManager = new TaskManager(Cleanup, false);
            _connectionLock = new AsyncLock();
            CancelToken = new CancellationToken(true);

            //Networking
            _config = client.Config;
            GatewaySocket = client.GatewaySocket;
            GatewaySocket.ReceivedDispatch += (s, e) => OnReceivedEvent(e);
            VoiceSocket = new VoiceSocket(_config, Config, client.Serializer, client.Log.CreateLogger($"Voice #{id}"));
            VoiceSocket.Server = server;
            OutputStream = new OutStream(this);
        }
Exemplo n.º 9
0
        private void TestBatchPrint(List<LabelFormatDocument> allBarcodeLabels)
        {
            // Initialize a new TaskManager object.
            using (TaskManager btTaskManager = new TaskManager())
            {
                // Start a task engine.
                btTaskManager.Start(1);

                // Create a group task.
                GroupTask groupTask = new GroupTask();

                List<BarcodeEntity> barcode = BusinessLogic.GetBarcodeDetails(txtQuoteNumber.Text);

                if (barcode == null)
                {
                    Helper.ShowErrorMessageBox("No data found for printing barcode!");
                    return;
                }
                foreach (LabelFormatDocument currentLabel in allBarcodeLabels)
                {
                    groupTask.Add(new PrintLabelFormatTask(currentLabel));
                }
                // Add two printing tasks to the group task.
                //groupTask.Add(new PrintLabelFormatTask(@"C:\Format2.btw"));
                // Execute the tasks asynchronously for performance.
                btTaskManager.TaskQueue.QueueTask(groupTask);

                // Stop the task engine. // Ten second timeout gives tasks time to finish.
                btTaskManager.Stop(10000, true);
            }
        }