diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | codec/SMPPPDUHeader.st | 60 | ||||
-rw-r--r-- | package.xml | 12 | ||||
-rw-r--r-- | test/SMPPPDUHeaderTest.st | 30 |
4 files changed, 103 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45d62d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.sw? diff --git a/codec/SMPPPDUHeader.st b/codec/SMPPPDUHeader.st new file mode 100644 index 0000000..39089b1 --- /dev/null +++ b/codec/SMPPPDUHeader.st @@ -0,0 +1,60 @@ +" + (C) 2014 by Holger Hans Peter Freyther + All Rights Reserved + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +" + +Object subclass: SMPPPDUHeader [ + | commandId commandStatus sequenceNumber | + <category: 'OsmoSMPP-Codec'> + <comment: 'I represent a SMPPv3.4 SMPP PDU Header. E.g. + 3.2 of the SMPPv3.4 specification. The four byte lengths + need to be written/read by someone else.'> + + SMPPPDUHeader class >> readFrom: aStream [ + ^self new + commandId: ((aStream next: 4) uintAt: 1) swap32; + commandStatus: ((aStream next: 4) uintAt: 1) swap32; + sequenceNumber: ((aStream next: 4) uintAt: 1) swap32; + yourself + ] + + commandId [ + <category: 'accessing'> + ^commandId + ] + + commandStatus [ + <category: 'accessing'> + ^commandStatus + ] + + sequenceNumber [ + <category: 'accessing'> + ^sequenceNumber + ] + + commandId: anId [ + commandId := anId + ] + + commandStatus: aStatus [ + commandStatus := aStatus + ] + + sequenceNumber: aNumber [ + sequenceNumber := aNumber + ] +] diff --git a/package.xml b/package.xml new file mode 100644 index 0000000..771a444 --- /dev/null +++ b/package.xml @@ -0,0 +1,12 @@ +<package> + <name>OsmoSMPP</name> + <namespace>Osmo</namespace> + <prereq>OsmoNetwork</prereq> + + <filein>codec/SMPPPDUHeader.st</filein> + + <test> + <sunit>Osmo.SMPPPDUHeaderTest</sunit> + <filein>test/SMPPPDUHeaderTest.st</filein> + </test> +</package> diff --git a/test/SMPPPDUHeaderTest.st b/test/SMPPPDUHeaderTest.st new file mode 100644 index 0000000..5938c08 --- /dev/null +++ b/test/SMPPPDUHeaderTest.st @@ -0,0 +1,30 @@ +" + (C) 2014 by Holger Hans Peter Freyther + All Rights Reserved + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +" + +TestCase subclass: SMPPPDUHeaderTest [ + <category: 'OsmoSMPP-Test'> + <comment: 'I test reading and writing most of the SMPP header.'> + + testParse [ + | hdr | + hdr := SMPPPDUHeader readFrom: #[0 0 0 2 0 0 0 0 0 0 0 1] readStream. + self assert: hdr commandId equals: 2. + self assert: hdr commandStatus equals: 0. + self assert: hdr sequenceNumber equals: 1. + ] +] |