• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import {BaseBean} from "./BaseBean.js";
17
18export class PayloadHead extends Object implements BaseBean {
19    private _flag: Array<number> = [0, 0]; //uint8_t  ct.c_uint8 * 2
20    private _reserve: Array<number>; //uint8_t // encrypt'flag or others options ct.c_uint8 * 2
21    private _protocolVer: number;// uint8_t 1
22    private _headSize: number = 0; // uint16_t 2
23    private _dataSize: number = 0; // uint32_t 4
24
25    constructor(flag: Array<number>, reserve: Array<number>, protocolVer: number, headSize: number, dataSize: number) {
26        super();
27        this._flag = flag;
28        this._reserve = reserve;
29        this._protocolVer = protocolVer;
30        this._headSize = headSize;
31        this._dataSize = dataSize;
32    }
33
34    static getPayloadHeadLength() {
35        return 11;
36    }
37    getDataView(): DataView {
38        const view = new DataView(new ArrayBuffer(11));
39        view.setUint8(0, this._flag[0]);
40        view.setUint8(1, this._flag[1]);
41        view.setUint8(2, this._reserve[0]);
42        view.setUint8(3, this._reserve[1]);
43        view.setUint8(4, this._protocolVer);
44        view.setUint16(5, this._headSize, false);
45        view.setUint32(7, this._dataSize);
46        return view;
47    }
48
49   static parsePlayHead(data: DataView): PayloadHead {
50        let flagZero = data.getUint8(0);
51        let flagOne = data.getUint8(1);
52        let reserveZero = data.getUint8(2);
53        let reserveOne = data.getUint8(3,);
54        let protocolVer = data.getUint8(4);
55        let headSize = data.getUint16(5);
56       let dataSize;
57        if (data.byteLength < 11) {
58            dataSize = 0;
59        } else {
60            dataSize = data.getUint32(7);
61        }
62        return new PayloadHead([flagZero, flagOne], [reserveZero, reserveOne], protocolVer, headSize, dataSize)
63    }
64
65    get flag(): Array<number> {
66        return this._flag;
67    }
68
69    set flag(value: Array<number>) {
70        this._flag = value;
71    }
72
73    get headSize(): number {
74        return this._headSize;
75    }
76
77    set headSize(value: number) {
78        this._headSize = value;
79    }
80
81    get dataSize(): number {
82        return this._dataSize;
83    }
84
85    set dataSize(value: number) {
86        this._dataSize = value;
87    }
88
89    toString(): string {
90        return "PayloadHead: " + this.getDataView.toString()
91            + ", parsePlayHead: " + PayloadHead.parsePlayHead.toString()
92    }
93}