diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-06-17 21:54:18 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-06-17 21:55:54 +0200 |
commit | 244f9b682bdc7b4dfc985780e9c8c920045b9747 (patch) | |
tree | ce1f5f9da06ccfe7d3597380485a6d4591ccedd9 | |
parent | c9cb3d5cab06255a64aba0d01e132c3007855e37 (diff) |
connection: Dispatch on the message body we have received
-rw-r--r-- | connection/Extensions.st | 29 | ||||
-rw-r--r-- | connection/SMPPConnection.st | 38 | ||||
-rw-r--r-- | package.xml | 1 |
3 files changed, 58 insertions, 10 deletions
diff --git a/connection/Extensions.st b/connection/Extensions.st new file mode 100644 index 0000000..bdbe52c --- /dev/null +++ b/connection/Extensions.st @@ -0,0 +1,29 @@ +" + (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/>. +" + +SMPPEnquireLink extend [ + connectionDispatchOn: aConnection with: aMessage [ + aConnection respondToEnquire: aMessage + ] +] + +SMPPBindTransceiverResponse extend [ + connectionDispatchOn: aConnection with: aMessage [ + aConnection receviedResponse: aMessage + ] +] diff --git a/connection/SMPPConnection.st b/connection/SMPPConnection.st index ac7ed2b..05564c5 100644 --- a/connection/SMPPConnection.st +++ b/connection/SMPPConnection.st @@ -38,15 +38,11 @@ Osmo.OsmoStreamSocketBase subclass: SMPPConnection [ ] scheduleBindTrx [ - | header body seq data | - - seq := nextSeq. - nextSeq := nextSeq + 1. + | header body | header := SMPPPDUHeader new commandId: SMPPBindTransceiver messageType; commandStatus: 0; - sequenceNumber: seq; yourself. body := SMPPBindTransceiver new systemId: systemId; @@ -58,11 +54,18 @@ Osmo.OsmoStreamSocketBase subclass: SMPPConnection [ addressRange: #[]; yourself. - data := (SMPPMessage new + self send: (SMPPMessage new header: header; - body: body; - toMessage) asByteArray. - writeQueue nextPut: data. + body: body) + ] + + send: aMessage [ + | seq | + seq := nextSeq. + nextSeq := nextSeq + 1. + + aMessage header sequenceNumber: seq. + writeQueue nextPut: aMessage toMessage asByteArray ] connect [ @@ -84,11 +87,26 @@ Osmo.OsmoStreamSocketBase subclass: SMPPConnection [ [ msg := SMPPMessage readFrom: socket. - msg inspect. + msg body connectionDispatchOn: self with: msg ] on: Error do: [:e | e inspect; pass ] ] + + respondToEnquire: aMessage [ + | msg | + msg := SMPPMessage new + header: (SMPPPDUHeader new + commandId: SMPPBodyBase enquireLinkResp; + commandStatus: 0; + sequenceNumber: aMessage header sequenceNumber; + yourself); + body: #[]. + self send: msg + ] + + receviedResponse: aMessage [ + ] ] diff --git a/package.xml b/package.xml index 29267f4..0528278 100644 --- a/package.xml +++ b/package.xml @@ -41,6 +41,7 @@ <filein>codec/SMPPMessage.st</filein> <filein>connection/SMPPConnection.st</filein> + <filein>connection/Extensions.st</filein> <test> <sunit>Osmo.SMPPPDUHeaderTest</sunit> |