The Trunk: Network-ul.136.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Network-ul.136.mcz

commits-2
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!