>From 408d55282f4eed62adf9a6e3b0fce88fef35fc83 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 12 Jun 2010 11:59:12 +0800 Subject: [PATCH 2/3] 2010-06-12 Holger Hans Peter Freyther * Sockets.st: Add AbstractSocket class>>#addressFromString to parse a string into a SocketAddress and use it inside the ServerSocket and DatagramSocket class. --- packages/sockets/ChangeLog | 6 ++++++ packages/sockets/Sockets.st | 26 ++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/sockets/ChangeLog b/packages/sockets/ChangeLog index a6ac75e..ba4dd79 100644 --- a/packages/sockets/ChangeLog +++ b/packages/sockets/ChangeLog @@ -1,5 +1,11 @@ 2010-06-12 Holger Hans Peter Freyther + * Sockets.st: Add AbstractSocket class>>#addressFromString to + parse a string into a SocketAddress and use it inside the + ServerSocket and DatagramSocket class. + +2010-06-12 Holger Hans Peter Freyther + * Datagram.st: Add #dataSize, #dataSize: and #size. * AbstractSocketImpl.st: Call Datagram>>#dataSize: from the #receive:datagram selector with the bytes read, use diff --git a/packages/sockets/Sockets.st b/packages/sockets/Sockets.st index a279c42..471f528 100644 --- a/packages/sockets/Sockets.st +++ b/packages/sockets/Sockets.st @@ -304,6 +304,20 @@ implementation objects.'> DefaultAddressClass := class ] + AbstractSocket class >> addressFromString: ipAddressOrString [ + | addr | + + ipAddressOrString isString + ifTrue: [ + addr := SocketAddress byName: ipAddressOrString. + addr isNil + ifTrue: + [self error: 'cannot resolve host name ' , ipAddressOrString printString]] + ifFalse: [addr := ipAddressOrString]. + + ^ addr + ] + AbstractSocket class >> new: implementation [ "Answer a new instance of the receiver, using as the underlying layer the object passed as the `implementation' parameter; the @@ -639,13 +653,7 @@ but it is done for cleanliness and symmetry.'> | localAddr remoteAddr addressClass | - ipAddressOrString isString - ifTrue: [ - remoteAddr := SocketAddress byName: ipAddressOrString. - remoteAddr isNil - ifTrue: - [self error: 'cannot resolve host name ' , ipAddressOrString printString]] - ifFalse: [remoteAddr := ipAddressOrString]. + remoteAddr := self addressFromString: ipAddressOrString. addressClass := remoteAddr isNil ifTrue: [self defaultAddressClass] ifFalse: [remoteAddr class]. @@ -1079,9 +1087,7 @@ This class adds a read buffer to the basic model of AbstractSocket.'> | localAddr remoteAddr addressClass | - remoteAddr := ipAddressOrString isString - ifTrue: [SocketAddress byName: ipAddressOrString] - ifFalse: [ipAddressOrString]. + remoteAddr := self addressFromString ipAddressOrString. remoteAddr isNil ifTrue: [self error: 'cannot resolve host name ' , ipAddressOrString printString]. -- 1.7.0.1