Squeak cleanup
Lic. Edgar J. De Cleene
edgardec2001 at yahoo.com.ar
Wed Nov 3 09:36:21 UTC 2004
On 02/11/04 13:42, "stéphane ducasse" <ducasse at iam.unibe.ch> wrote:
> for the OldSocket please send your cs that remove them from the image.
> Or publish a sm package that remove it from the image.
>
> I would prefer to deprecate it simply. Is there anybody there that need
> it?
>
> Stef
Don¹t forget add this to Socket.
Some old methods are still needed.
And fix all examples in OldSocket for working with Sockets and move to class
I think I send something about this a long time ago.
Edgar
-------------- next part --------------
'From Squeak3.7 of ''4 September 2004'' [latest update: #5989] on 3 November 2004 at 6:32:47 am'!
"Change Set: Socket
Date: 3 November 2004
Author: Edgar J. De Cleene
This methods what once we have in OldSockets are needeed>"!
!Socket methodsFor: 'receiving' stamp: 'edc 2/15/2004 09:17'!
getData
| t1 t2 |
(self waitForDataUntil: Socket standardDeadline)
ifFalse: [self error: 'getData timeout'].
t1 _ String new: 4000.
t2 _ self
primSocket: socketHandle
receiveDataInto: t1
startingAt: 1
count: t1 size.
^ t1 copyFrom: 1 to: t2! !
!Socket methodsFor: 'waiting' stamp: 'jm 3/2/98 18:15'!
waitForConnectionUntil: deadline
"Wait up until the given deadline for a connection to be established. Return true if it is established by the deadline, false if not."
| status |
status _ self primSocketConnectionStatus: socketHandle.
[(status = WaitingForConnection) and: [Time millisecondClockValue < deadline]]
whileTrue: [
semaphore waitTimeoutMSecs: (deadline - Time millisecondClockValue).
status _ self primSocketConnectionStatus: socketHandle].
^ status = Connected! !
!Socket methodsFor: 'waiting' stamp: 'edc 2/15/2004 09:19'!
waitForDataUntil: deadline
"Wait up until the given deadline for data to arrive. Return true if data
arrives by the deadline, false if not."
| dataArrived |
[self isConnected & (dataArrived := self primSocketReceiveDataAvailable: socketHandle) not
and: ["Connection end and final data can happen fast, so test in this
order "
Time millisecondClockValue < deadline]]
whileTrue: [self readSemaphore waitTimeoutMSecs: deadline - Time millisecondClockValue].
^ dataArrived! !
!Socket methodsFor: 'waiting' stamp: 'edc 10/5/2004 11:44'!
waitForDisconnectionUntil: deadline
"Wait up until the given deadline for the the connection to be broken. Return true if it is broken by the deadline, false if not."
"Note: The client should know the the connect is really going to be closed (e.g., because he has called 'close' to send a close request to the other end) before calling this method.
JMM 00/5/17 note that other end can close which will terminate wait"
| extraBytes status |
extraBytes := 0.
status := self primSocketConnectionStatus: socketHandle.
[((status = Connected) or: [(status = ThisEndClosed)]) and:
[Time millisecondClockValue < deadline]] whileTrue: [
self dataAvailable
ifTrue: [extraBytes := extraBytes + self discardReceivedData].
semaphore waitTimeoutMSecs: (deadline - Time millisecondClockValue).
status := self primSocketConnectionStatus: socketHandle].
extraBytes > 0
ifTrue: [self inform: 'Discarded ', extraBytes printString, ' bytes while closing connection.'].
^ status ~= Connected
! !
!Socket methodsFor: 'waiting' stamp: 'edc 10/5/2004 11:42'!
waitForSendDoneUntil: deadline
"Wait up until the given deadline for the current send operation to complete. Return true if it completes by the deadline, false if not."
| sendDone |
[self isConnected & (sendDone := self primSocketSendDone: socketHandle) not
"Connection end and final data can happen fast, so test in this order"
and: [Time millisecondClockValue < deadline]] whileTrue: [
self writeSemaphore waitTimeoutMSecs: (deadline - Time millisecondClockValue)].
^ sendDone! !
!Socket methodsFor: 'sending-receiving objects' stamp: 'dgd 2/22/2002 20:28'!
getObject
"gets a serialized object from this socket"
| encoded object |
encoded _ String new writeStream.
[encoded size isZero]
whileTrue: [encoded nextPutAll: self getData].
[self isConnected
and: [self dataAvailable]]
whileTrue: [encoded nextPutAll: self getData].
object _ ReferenceStream unStream: encoded contents.
^ object! !
!Socket methodsFor: 'sending-receiving objects' stamp: 'dgd 2/22/2002 20:28'!
sendObject: anObject
"sends a serialized object to this socket"
| encoded |
encoded _ ReferenceStream streamedRepresentationOf: anObject.
self sendData: encoded! !
Socket class removeSelector: #remoteCommClient!
More information about the Squeak-dev
mailing list
|