• 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() + ', parsePlayHead: ' + PayloadHead.parsePlayHead.toString();
91  }
92}
93