summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--codec/SMPPPDUHeader.st60
-rw-r--r--package.xml12
-rw-r--r--test/SMPPPDUHeaderTest.st30
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.
+ ]
+]