12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using HttpDownload;
- using NettyClient;
- using System.Threading;
- using TaskDatabase;
- namespace Client
- {
- public class ClientApp
- {
- TaskNettyClient client; // 网络传输客户端
- SimpleMessageHandler simpleHandler; // 网络传输处理
- TaskService taskService; // 持久化任务
- TaskDownloadManager taskDownloadManager; // 下载任务文件(Http)
- MessageHandler messageHandler; // 处理客户端收到的消息
- TaskHandler taskHandler; // 处理服务端发送的任务(监视下载状况等待)
- int maxTaskCount; // 能处理的最大任务数量, 影响是否拒绝服务器分发的任务
- string defaultFileDir; // 默认文件目录
- IRevitCommandExcutor revitCommandExcutor;
- public ClientApp(string ip, int port, string dir, int maxTaskCount, IRevitCommandExcutor revitCommandExcutor, int maxDownTaskCount=5) {
- client = new TaskNettyClient(ip, port);
- taskService = new TaskService();
- taskDownloadManager = new TaskDownloadManager(maxDownTaskCount);
- this.maxTaskCount = maxTaskCount;
- defaultFileDir = dir;
- this.revitCommandExcutor = revitCommandExcutor;
- }
- public void Start() {
-
- simpleHandler = new SimpleMessageHandler();
- if (messageHandler == null)
- {
- taskHandler = new TaskHandler(simpleHandler, taskService, taskDownloadManager, defaultFileDir, revitCommandExcutor);
- taskHandler.SyncAllTask();
- messageHandler = new MessageHandler(simpleHandler, maxTaskCount, taskHandler);
- messageHandler.ResumeAllTasks();
- ThreadPool.QueueUserWorkItem(messageHandler.HandleMessage);
- ThreadPool.QueueUserWorkItem(taskHandler.RunTasks);
- }
- else
- {
- messageHandler.setSimpleMessageHandler(simpleHandler);
- taskHandler.setSimpleMessageHandler(simpleHandler);
- }
- client.RunClientAsync(simpleHandler).Wait();
- }
- public void Close() {
- client.CloseAsync().Wait();
- }
- public void PauseAllTask() {
- taskDownloadManager.pauseAllTasks();
- messageHandler.PauseAllTasks();
- }
- public void ResumeAllTask()
- {
- taskDownloadManager.resumeAllTasks();
- messageHandler.ResumeAllTasks();
- }
- }
-
- }
|