-
Notifications
You must be signed in to change notification settings - Fork 11
/
Deliver.ts
108 lines (84 loc) · 2.13 KB
/
Deliver.ts
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import { Data } from './utils/Data/Data';
import { Helper } from './utils/Helper';
import { PDU, PDUOptions } from './utils/PDU';
import { SCA } from './utils/SCA/SCA';
import { SCTS } from './utils/SCTS';
import { DeliverType } from './utils/Type/DeliverType';
export interface DeliverOptions extends PDUOptions {
type?: DeliverType;
serviceCenterTimeStamp?: SCTS;
}
export class Deliver extends PDU {
private _type: DeliverType;
private _data: Data;
private _serviceCenterTimeStamp: SCTS;
constructor(address: string | SCA, data: string | Data, options: DeliverOptions = {}) {
super(address, options);
this._type = options.type || new DeliverType();
this._data = this.findData(data);
this._serviceCenterTimeStamp = options.serviceCenterTimeStamp || new SCTS(this.getDateTime());
}
/*
* getter & setter
*/
get type() {
return this._type;
}
setType(type: DeliverType) {
this._type = type;
return this;
}
get data() {
return this._data;
}
setData(data: string | Data) {
this._data = this.findData(data);
return this;
}
get serviceCenterTimeStamp() {
return this._serviceCenterTimeStamp;
}
setServiceCenterTimeStamp(time: Date | SCTS = this.getDateTime()) {
if (time instanceof SCTS) {
this._serviceCenterTimeStamp = time;
return this;
}
this._serviceCenterTimeStamp = new SCTS(time);
return this;
}
/*
* private functions
*/
private getDateTime() {
// Create Date in the increment of 10 days
return new Date(Date.now() + 864000000);
}
private findData(data: string | Data) {
if (data instanceof Data) {
return data;
}
return new Data().setData(data, this);
}
/*
* public functions
*/
getParts() {
return this._data.parts;
}
getPartStrings() {
return this._data.parts.map((part) => part.toString(this));
}
toString() {
return this.getStart();
}
getStart() {
let str = '';
str += this.serviceCenterAddress.toString();
str += this._type.toString();
str += this.address.toString();
str += Helper.toStringHex(this.protocolIdentifier.getValue());
str += this.dataCodingScheme.toString();
str += this._serviceCenterTimeStamp.toString();
return str;
}
}