diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2012-03-25 18:28:29 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2012-03-25 18:38:52 +0200 |
commit | 73f8b9a05cc3d40169877f450b943db340cf7653 (patch) | |
tree | 53edf233f2d273698045292a614eddf22d0ae27f /Messages.st | |
parent | 59741ad281bd17fad2c6deba9c7238a50f1ad30e (diff) |
streams: Take streams in IEMessage class>>#findIE:from:on:
Diffstat (limited to 'Messages.st')
-rw-r--r-- | Messages.st | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Messages.st b/Messages.st index 1124f77..a85d940 100644 --- a/Messages.st +++ b/Messages.st @@ -49,17 +49,16 @@ Object subclass: IEMessage [ yourself ] - IEMessage class >> findIE: data from: aIEBase on: aMsg [ + IEMessage class >> findIE: stream from: aIEBase on: aMsg [ "TODO: This needs to move some basic dispatch class" "Find the IE that handles the type specified" | type | - type := data at: 1. + type := stream next. aIEBase allSubclassesDo: [:each | each elementId = type ifTrue: [ - | enc size stream | - stream := (data copyFrom: 2) readStream. + | enc size | size := each length: stream. aMsg addIe: (each parseFrom: stream). ^ 1 + size @@ -76,7 +75,7 @@ Object subclass: IEMessage [ dat := aByteArray copyFrom: 2. [dat isEmpty not] whileTrue: [ | consumed | - consumed := self findIE: dat from: aIEBase on: msg. + consumed := self findIE: dat readStream from: aIEBase on: msg. dat := dat copyFrom: consumed + 1. ]. |