streams: Switch BSSAP to use streams.
This commit is contained in:
parent
7b43f3eed2
commit
8bdb0be6dc
22
BSSAP.st
22
BSSAP.st
|
@ -1,5 +1,5 @@
|
|||
"
|
||||
(C) 2010 by Holger Hans Peter Freyther
|
||||
(C) 2010-2012 by Holger Hans Peter Freyther
|
||||
All Rights Reserved
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -49,14 +49,14 @@ Object subclass: BSSAPHelper [
|
|||
Object subclass: BSSAPMessage [
|
||||
<category: 'OsmoGSM'>
|
||||
|
||||
BSSAPMessage class >> decode: bssap [
|
||||
BSSAPMessage class >> decode: aStream [
|
||||
| type |
|
||||
type := bssap at: 1.
|
||||
type := aStream next.
|
||||
|
||||
BSSAPMessage allSubclassesDo: [:each |
|
||||
each msgType = type
|
||||
ifTrue: [
|
||||
^ each parseFrom: bssap.
|
||||
^ each parseFrom: aStream.
|
||||
]
|
||||
].
|
||||
|
||||
|
@ -76,10 +76,10 @@ BSSAPMessage subclass: BSSAPManagement [
|
|||
yourself.
|
||||
]
|
||||
|
||||
BSSAPMessage class >> parseFrom: aByteArray [
|
||||
BSSAPMessage class >> parseFrom: aStream [
|
||||
| size data |
|
||||
size := aByteArray at: 2.
|
||||
data := aByteArray copyFrom: 3 to: 2 + size.
|
||||
size := aStream next.
|
||||
data := aStream next: size.
|
||||
|
||||
^ BSSAPManagement initWith: data.
|
||||
]
|
||||
|
@ -115,11 +115,11 @@ BSSAPMessage subclass: BSSAPDTAP [
|
|||
yourself
|
||||
]
|
||||
|
||||
BSSAPDTAP class >> parseFrom: aByteArray [
|
||||
BSSAPDTAP class >> parseFrom: aStream [
|
||||
| li size dat |
|
||||
li := aByteArray at: 2.
|
||||
size := aByteArray at: 3.
|
||||
dat := aByteArray copyFrom: 4 to: 4 + size - 1.
|
||||
li := aStream next.
|
||||
size := aStream next.
|
||||
dat := aStream next: size.
|
||||
|
||||
^ BSSAPDTAP initWith: dat linkIdentifier: li.
|
||||
]
|
||||
|
|
|
@ -334,15 +334,15 @@ Object subclass: MSGParser [
|
|||
sccp := Osmo.SCCPMessage decode: aByteArray.
|
||||
(sccp respondsTo: #data)
|
||||
ifTrue: [
|
||||
sccp data: (self decodeBSSAP: sccp data).
|
||||
sccp data: (self decodeBSSAP: sccp data readStream).
|
||||
].
|
||||
|
||||
^ sccp
|
||||
]
|
||||
|
||||
MSGParser class >> decodeBSSAP: aData [
|
||||
MSGParser class >> decodeBSSAP: aStream [
|
||||
| bssap |
|
||||
bssap := BSSAPMessage decode: aData.
|
||||
bssap := BSSAPMessage decode: aStream.
|
||||
bssap class msgType = BSSAPDTAP msgType
|
||||
ifTrue: [
|
||||
bssap data: (GSM48MSG decode: bssap data)
|
||||
|
|
2
Tests.st
2
Tests.st
|
@ -144,7 +144,7 @@ TestCase subclass: BSSAPTest [
|
|||
testParseManagement [
|
||||
| man |
|
||||
|
||||
man := BSSAPMessage decode: #(0 3 1 2 3) asByteArray.
|
||||
man := BSSAPMessage decode: #(0 3 1 2 3) asByteArray readStream.
|
||||
self assert: (man isKindOf: BSSAPManagement).
|
||||
self assert: man data = #(1 2 3) asByteArray.
|
||||
]
|
||||
|
|
Reference in New Issue