SCCP: Be able to parse a DT1 message
This commit is contained in:
parent
a7376149b3
commit
d8f0148f81
23
SCCP.st
23
SCCP.st
|
@ -400,6 +400,21 @@ SCCPMessage subclass: SCCPConnectionData [
|
|||
yourself.
|
||||
]
|
||||
|
||||
SCCPConnectionData class >> parseFrom: aByteArray [
|
||||
| more_data var_start addr size data |
|
||||
addr := SCCPAddrReference fromByteArray: (aByteArray copyFrom: 2).
|
||||
more_data := aByteArray at: 5.
|
||||
more_data = 0 ifFalse: [
|
||||
Error signal: 'Fragmented data is not supported.'.
|
||||
].
|
||||
|
||||
var_start := aByteArray at: 6.
|
||||
size := aByteArray at: 6 + var_start.
|
||||
data := aByteArray copyFrom: (6 + var_start + 1) to: (6 + var_start + size).
|
||||
|
||||
^ SCCPConnectionData initWith: addr data: data.
|
||||
]
|
||||
|
||||
dst: aDst [
|
||||
<category: 'private'>
|
||||
dst := aDst.
|
||||
|
@ -414,6 +429,14 @@ SCCPMessage subclass: SCCPConnectionData [
|
|||
].
|
||||
]
|
||||
|
||||
dst [
|
||||
^ dst
|
||||
]
|
||||
|
||||
data [
|
||||
^ data
|
||||
]
|
||||
|
||||
writeOn: aMsg [
|
||||
| dat |
|
||||
<category: 'conversion'>
|
||||
|
|
10
Tests.st
10
Tests.st
|
@ -23,11 +23,17 @@ TestCase subclass: SCCPTests [
|
|||
]
|
||||
|
||||
testDT1 [
|
||||
| dt1 msg |
|
||||
| dt1 msg target |
|
||||
target := #(6 1 4 0 0 1 4 49 50 51 52) asByteArray.
|
||||
dt1 := SCCPConnectionData initWith: 16r401 data: '1234' asByteArray.
|
||||
msg := dt1 toMessage asByteArray.
|
||||
|
||||
self assert: msg = #(6 1 4 0 0 1 4 49 50 51 52) asByteArray.
|
||||
self assert: msg = target.
|
||||
|
||||
dt1 := SCCPMessage decode: target.
|
||||
self assert: dt1 dst = 16r401.
|
||||
self assert: dt1 data = '1234' asByteArray.
|
||||
self assert: dt1 toMessage asByteArray = target.
|
||||
]
|
||||
|
||||
testCR [
|
||||
|
|
Reference in New Issue