Blame view

C5/xpadprotocal/src/main/java/com/sunvote/cmd/BaseCmd.java 3.04 KB
fac86401   孙向锦   初始化C5 Vote
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  package com.sunvote.cmd;
  
  import com.sunvote.cmd.app.BaseBeaconStateRequest;
  import com.sunvote.cmd.app.MutiPkgDownCmd;
  import com.sunvote.cmd.push.BaseStatusChangeRequest;
  import com.sunvote.cmd.push.BaseStatusChangeResponse;
  import com.sunvote.cmd.push.DownloadSingletonPkg;
  import com.sunvote.cmd.push.PushBaseCmd;
  import com.sunvote.cmd.push.VoteStatusChangeRequest;
  import com.sunvote.cmd.push.VoteStatusChangeResponse;
  import com.sunvote.cmd.state.GetPkgStateRequest;
  import com.sunvote.cmd.state.GetPkgStateResponse;
  import com.sunvote.cmd.state.StateBaseCmd;
  import com.sunvote.cmd.upgrade.UpgradeBaseCmd;
  import com.sunvote.cmd.upload.UploadBaseCmd;
  
  /**
   * Created by Elvis on 2017/8/11.
   * Email:Eluis@psunsky.com
   * Description:
   */
  
  public abstract class BaseCmd implements ICmd {
  
      @Override
      public ICmd parseCmd(byte[] source) {
          return parseCmd(source,0);
      }
  
      public static ICmd parse(byte[] datas,int length){
          if(length > 5){
              byte[] ds = new byte[length - 4];
              for(int i = 0 ; i < length - 4; i ++){
                  ds[i] = datas[i+4];
              }
              switch (ds[0]) {
                  case StateBaseCmd.REQUEST_CMD:
                      return StateBaseCmd.parseRequest(ds, length);
                  case BaseStatusChangeRequest.REQUEST_CMD:
                      return PushBaseCmd.parseRequest(ds,length);
                  case UpgradeBaseCmd.REQUEST_CMD:
                      return UpgradeBaseCmd.parseRequest(ds,length);
                  case UploadBaseCmd.REQUEST_CMD:
                      return UploadBaseCmd.parseRequest(ds,length);
                  case StateBaseCmd.RESPONSE_CMD:
                      return StateBaseCmd.parseResponse(ds, length-4);
                  case BaseStatusChangeResponse.RESPONSE_CMD:
                      return PushBaseCmd.parseResponse(ds,length-4);
                  case UpgradeBaseCmd.RESPONSE_CMD:
                      return UpgradeBaseCmd.parseResponse(ds,length-4);
                  case UploadBaseCmd.RESPONSE_CMD:
                      return UploadBaseCmd.parseResponse(ds,length-4);
                  case GetPkgStateRequest.CONTEND_1:
                  case GetPkgStateRequest.CONTEND_2:
                       return GetPkgStateRequest.parseRequest(ds,length-4);
                  case BaseBeaconStateRequest.CMD:
                      return BaseBeaconStateRequest.parseRequest(ds,length-4);
                  case GetPkgStateResponse.CMD:
                      return GetPkgStateResponse.parseRequest(ds,length-4);
                  case DownloadSingletonPkg.CMD:
                      return PushBaseCmd.parseRequest(ds,length-4);
                  case VoteStatusChangeRequest.REQUEST_CMD:
                      return PushBaseCmd.parseRequest(ds,length-4);
                  case MutiPkgDownCmd.DOWNCMD:
                      return MutiPkgDownCmd.parseRequest(ds,length-4);
                  case VoteStatusChangeResponse.RESPONE_CMD:
                      return VoteStatusChangeResponse.parseRequest(ds,length-4);
                  default:
                      return null;
              }
          }
          return null;
      }
  }