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 . +" + +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 @@ codec/SMPPMessage.st connection/SMPPConnection.st + connection/Extensions.st Osmo.SMPPPDUHeaderTest