public static void Start() { if (_running) { return; } var cfg = DfsProtocolConfiguration.Instance; var cert = new X509Certificate2(Config.Dfs.CertificatePath, Config.Dfs.CertificatePassword); var factory = cfg.GetServerSslFactory(cert); VerifyQueue = new ThreadedQueueProcessor <IncomingFileStatus>(Config.Dfs.VerifyQueue, new VerifyFileWorker()); SendQueue = new ThreadedQueueProcessor <SendFileItem>(Config.Dfs.SendQueue, new SendFileWorker()); UnzipQueue = new ThreadedQueueProcessor <UnzipFileItem>(Config.Dfs.UnzipQueue, new UnzipFileWorker()); Server = new TcpServer(new IPEndPoint(IPAddress.Any, Config.Dfs.Port), cfg, factory); Server.ReceiveTimeout = TimeSpan.FromMilliseconds(Config.Dfs.PingInterval); Server.Timeout += Server_Timeout; Server.IdleTimeout += Server_IdleTimeout; Server.AcceptClient = AcceptClient; Server.On <C2S_FileShareRequest>(HandleFileShareRequest); Server.On <C2S_FileInfoRequest>(HandleFileQuery); Server.On <C2S_PutFileRequest>(HandlePutFileRequest); Server.On <C2S_DownloadFileRequest>(HandleDownloadFileRequest); Server.OnRequest <C2S_DownloadFileReady>(CaptureDownloadFileReady); Server.On <C2S_DeleteFileRequest>(HandleDeleteFileRequest); Server.OnRequest <C2S_UnzipFileRequest>(CaptureUnzipFileRequest); Server.ClientDisconnected += Server_ClientDisconnected; Server.Start(); _running = true; }
public ProtocolConfiguration(IPayloadEncoder encoder, IPayloadDecoder decoder, ThreadedQueueProcessor <SendMessageQueueItem> customOutQueue = null, ThreadedQueueProcessor <ReceiveMessageQueueItem> customInQueue = null, bool readAsync = false) { PayloadEncoder = encoder; PayloadDecoder = decoder; Serializer = encoder.Serializer; CustomOutcomingMessageQueue = customOutQueue; CustomIncomingMessageQueue = customInQueue; ReadAsync = readAsync; Initialize(); }
internal static void Pipe(ThreadedQueueProcessor <DummyWorkItem> p, int index, int count, int delayMin = 50, int delayMax = 120) { Console.WriteLine($"Pipe #{index}, {count}"); p.NewClient(); var rnd = new Random(); for (int i = 0; i < count; i++) { p.Enqueue(new DummyWorkItem() { Delay = rnd.Next(delayMin, delayMax), Target = index, TargetValue = i + 1 }, index); } //p.RemoveClient(); }