Levente Uzonyi uploaded a new version of Network to project The Trunk:
http://source.squeak.org/trunk/Network-ul.136.mcz ==================== Summary ==================== Name: Network-ul.136 Author: ul Time: 4 September 2012, 2:22:41.701 pm UUID: 2202831d-2550-1448-92d4-b5647ffeede1 Ancestors: Network-ul.135 Socket's primitiveOnlySupportsOneSemaphore instance variable sneaked back during the IPv6 integration, let's get rid of it one more time. =============== Diff against Network-ul.135 =============== Item was changed: Object subclass: #Socket + instanceVariableNames: 'semaphore socketHandle readSemaphore writeSemaphore' - instanceVariableNames: 'semaphore socketHandle readSemaphore writeSemaphore primitiveOnlySupportsOneSemaphore' classVariableNames: 'Connected DeadServer InvalidSocket OtherEndClosed Registry RegistryThreshold TCPSocketType ThisEndClosed UDPSocketType Unconnected WaitingForConnection' poolDictionaries: '' category: 'Network-Kernel'! !Socket commentStamp: 'gk 12/13/2005 00:43' prior: 0! A Socket represents a network connection point. Current sockets are designed to support the TCP/IP and UDP protocols. Sockets are the lowest level of networking object in Squeak and are not normally used directly. SocketStream is a higher level object wrapping a Socket in a stream like protocol. ProtocolClient and subclasses are in turn wrappers around a SocketStream to provide support for specific network protocols such as POP, NNTP, HTTP, and FTP.! Item was changed: ----- Method: Socket>>acceptFrom: (in category 'initialize-destroy') ----- acceptFrom: aSocket "Initialize a new socket handle from an accept call" | semaIndex readSemaIndex writeSemaIndex | - primitiveOnlySupportsOneSemaphore := false. semaphore := Semaphore new. readSemaphore := Semaphore new. writeSemaphore := Semaphore new. semaIndex := Smalltalk registerExternalObject: semaphore. readSemaIndex := Smalltalk registerExternalObject: readSemaphore. writeSemaIndex := Smalltalk registerExternalObject: writeSemaphore. socketHandle := self primAcceptFrom: aSocket socketHandle receiveBufferSize: 8000 sendBufSize: 8000 semaIndex: semaIndex readSemaIndex: readSemaIndex writeSemaIndex: writeSemaIndex. socketHandle ifNotNil: [ self register ] ifNil: [ "socket creation failed" Smalltalk unregisterExternalObject: semaphore. Smalltalk unregisterExternalObject: readSemaphore. Smalltalk unregisterExternalObject: writeSemaphore. readSemaphore := writeSemaphore := semaphore := nil ] ! Item was changed: ----- Method: Socket>>initialize: (in category 'initialize-destroy') ----- initialize: socketType "Initialize a new socket handle. If socket creation fails, socketHandle will be set to nil." | semaIndex readSemaIndex writeSemaIndex | - primitiveOnlySupportsOneSemaphore := false. semaphore := Semaphore new. readSemaphore := Semaphore new. writeSemaphore := Semaphore new. semaIndex := Smalltalk registerExternalObject: semaphore. readSemaIndex := Smalltalk registerExternalObject: readSemaphore. writeSemaIndex := Smalltalk registerExternalObject: writeSemaphore. socketHandle := self primSocketCreateNetwork: 0 type: socketType receiveBufferSize: 8000 sendBufSize: 8000 semaIndex: semaIndex readSemaIndex: readSemaIndex writeSemaIndex: writeSemaIndex. socketHandle ifNotNil: [ self register ] ifNil: [ "socket creation failed" Smalltalk unregisterExternalObject: semaphore. Smalltalk unregisterExternalObject: readSemaphore. Smalltalk unregisterExternalObject: writeSemaphore. readSemaphore := writeSemaphore := semaphore := nil ] ! Item was changed: ----- Method: Socket>>initialize:family: (in category 'initialize-destroy') ----- initialize: socketType family: family "Initialize a new socket handle. If socket creation fails, socketHandle will be set to nil." | semaIndex readSemaIndex writeSemaIndex | NetNameResolver useOldNetwork ifTrue: [^self initialize: socketType]. - primitiveOnlySupportsOneSemaphore := false. semaphore := Semaphore new. readSemaphore := Semaphore new. writeSemaphore := Semaphore new. semaIndex := Smalltalk registerExternalObject: semaphore. readSemaIndex := Smalltalk registerExternalObject: readSemaphore. writeSemaIndex := Smalltalk registerExternalObject: writeSemaphore. socketHandle := self primSocketCreateNetwork: family type: socketType receiveBufferSize: 8000 sendBufSize: 8000 semaIndex: semaIndex readSemaIndex: readSemaIndex writeSemaIndex: writeSemaIndex. socketHandle ifNotNil: [ self register ] ifNil: [ "socket creation failed" Smalltalk unregisterExternalObject: semaphore. Smalltalk unregisterExternalObject: readSemaphore. Smalltalk unregisterExternalObject: writeSemaphore. readSemaphore := writeSemaphore := semaphore := nil ] ! Item was changed: ----- Method: Socket>>primAcceptFrom:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex: (in category 'primitives') ----- primAcceptFrom: aHandle receiveBufferSize: rcvBufSize sendBufSize: sndBufSize semaIndex: semaIndex readSemaIndex: aReadSema writeSemaIndex: aWriteSema "Create and return a new socket handle based on accepting the connection from the given listening socket" + <primitive: 'primitiveSocketAccept3Semaphores' module: 'SocketPlugin'> + self primitiveFailed! - primitiveOnlySupportsOneSemaphore := true. - ^self primAcceptFrom: aHandle receiveBufferSize: rcvBufSize sendBufSize: sndBufSize semaIndex: semaIndex ! Item was changed: ----- Method: Socket>>primSocketCreateNetwork:type:receiveBufferSize:sendBufSize:semaIndex:readSemaIndex:writeSemaIndex: (in category 'primitives') ----- primSocketCreateNetwork: netType type: socketType receiveBufferSize: rcvBufSize sendBufSize: sendBufSize semaIndex: semaIndex readSemaIndex: aReadSema writeSemaIndex: aWriteSema + "See comment in primSocketCreateNetwork: with one semaIndex. However you should know that some implementations ignore the buffer size and this interface supports three semaphores, one for open/close/listen and the other two for reading and writing" - "See comment in primSocketCreateNetwork: with one semaIndex. However you should know that some implementations - ignore the buffer size and this interface supports three semaphores, one for open/close/listen and the other two for - reading and writing" <primitive: 'primitiveSocketCreate3Semaphores' module: 'SocketPlugin'> + self primitiveFailed! - primitiveOnlySupportsOneSemaphore := true. - ^ self primSocketCreateNetwork: netType - type: socketType - receiveBufferSize: rcvBufSize - sendBufSize: sendBufSize - semaIndex: semaIndex! |
Free forum by Nabble | Edit this page |