BaseCmd.java
3.04 KB
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;
    }
}