MessageHandler.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package cn.sagacloud.server;
  2. import cn.sagacloud.pojo.ChannelHandlerContextWrapper;
  3. import cn.sagacloud.pojo.ClientMessage;
  4. import cn.sagacloud.pojo.Command;
  5. import cn.sagacloud.proto.MessageProto;
  6. import cn.sagacloud.proto.MessageUtil;
  7. import cn.sagacloud.utils.CommonUtil;
  8. import java.util.concurrent.ConcurrentLinkedQueue;
  9. public class MessageHandler implements Runnable {
  10. public static ConcurrentLinkedQueue<ClientMessage> messageQueue = new ConcurrentLinkedQueue<>();
  11. public static void handle(MessageProto.Message message, ChannelHandlerContextWrapper clientWrapper) {
  12. Command cmd;
  13. try {
  14. cmd = Command.valueOf(message.getCmd());
  15. }catch (Exception ex){
  16. return;
  17. }
  18. switch (cmd){
  19. case AcceptTask:
  20. clientWrapper.acceptTask(message.getTaskId());
  21. break;
  22. case RefuseTask:
  23. clientWrapper.setLastRejectTime(message.getTaskId());
  24. break;
  25. case ClientInfo:
  26. clientWrapper.setClientInfo(message.getContent());
  27. break;
  28. case TaskSuccess:
  29. clientWrapper.taskSuccess(message);
  30. break;
  31. case CommandError:
  32. clientWrapper.commandError(message);
  33. break;
  34. case DownloadError:
  35. clientWrapper.downloadError(message);
  36. break;
  37. }
  38. }
  39. public static void offer(ClientMessage clientMessage) {
  40. MessageUtil.printMessage(clientMessage.getMessage());
  41. messageQueue.offer(clientMessage);
  42. }
  43. @Override
  44. public void run() {
  45. while(true){
  46. ClientMessage clientMessage = messageQueue.poll();
  47. if(clientMessage == null){
  48. try {
  49. Thread.sleep(500);
  50. } catch (InterruptedException e) {
  51. e.printStackTrace();
  52. }
  53. continue;
  54. }
  55. handle(clientMessage.getMessage(), clientMessage.getCtxWrapper());
  56. }
  57. }
  58. }