1
0
Fork 0

SCCP: Be able to parse a DT1 message

This commit is contained in:
Holger Hans Peter Freyther 2010-11-24 14:31:38 +01:00
parent a7376149b3
commit d8f0148f81
2 changed files with 31 additions and 2 deletions

23
SCCP.st
View File

@ -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'>

View File

@ -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 [