--- a/Socket.st Mon Mar 18 12:01:22 2002 +0100
+++ b/Socket.st Wed Mar 20 10:21:11 2002 +0100
@@ -4448,6 +4448,51 @@
^ peerName
!
+getSocketAdress
+"
+ implemented for swazoo project primitive code cant load as extension
+ answer the my own address (I am bound to this address).
+ Note that this address may change after connect or accept.
+"
+
+ |socketAddress error|
+
+ filePointer isNil ifTrue:[
+ ^ self errorNotOpen
+ ].
+ socketAddress := ByteArray new:16.
+
+%{
+#ifndef NO_SOCKET
+ OBJ t = __INST(filePointer);
+ int sock;
+ int sockaddr_size;
+ int ret;
+
+ if (!__isNonNilObject(socketAddress) ||
+ (__intVal(__ClassInstPtr(__qClass(socketAddress))->c_flags) & ARRAYMASK) != BYTEARRAY) {
+ error = @symbol(badArgument1);
+ goto err;
+ }
+ sockaddr_size = __byteArraySize(socketAddress);
+
+ sock = fileno(__FILEVal(t));
+ ret = getsockname(sock, (struct sockaddr *)__byteArrayVal(socketAddress), &sockaddr_size);
+ if (ret < 0) {
+ DBGPRINTF(("SOCKET: getsocketname failed errno=%d\n", errno));
+ error = __MKSMALLINT(errno);
+ }
+err:;
+#else /* NO_SOCKET */
+ error = @symbol(notImplemented);
+#endif /* NO_SOCKET */
+%}.
+ error notNil ifTrue:[
+ ^ self errorReporter reportOn:error
+ ].
+ ^ socketAddress copyFrom:5 to:8
+!
+
isActive
"return true, if the receiver has a connection"
@@ -5071,5 +5116,5 @@
!Socket class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.160 2002-01-30 15:55:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.161 2002-03-20 09:21:11 penk Exp $'
! !