4446 partners host after an accept." |
4446 partners host after an accept." |
4447 |
4447 |
4448 ^ peerName |
4448 ^ peerName |
4449 ! |
4449 ! |
4450 |
4450 |
|
4451 getSocketAdress |
|
4452 " |
|
4453 implemented for swazoo project primitive code cant load as extension |
|
4454 answer the my own address (I am bound to this address). |
|
4455 Note that this address may change after connect or accept. |
|
4456 " |
|
4457 |
|
4458 |socketAddress error| |
|
4459 |
|
4460 filePointer isNil ifTrue:[ |
|
4461 ^ self errorNotOpen |
|
4462 ]. |
|
4463 socketAddress := ByteArray new:16. |
|
4464 |
|
4465 %{ |
|
4466 #ifndef NO_SOCKET |
|
4467 OBJ t = __INST(filePointer); |
|
4468 int sock; |
|
4469 int sockaddr_size; |
|
4470 int ret; |
|
4471 |
|
4472 if (!__isNonNilObject(socketAddress) || |
|
4473 (__intVal(__ClassInstPtr(__qClass(socketAddress))->c_flags) & ARRAYMASK) != BYTEARRAY) { |
|
4474 error = @symbol(badArgument1); |
|
4475 goto err; |
|
4476 } |
|
4477 sockaddr_size = __byteArraySize(socketAddress); |
|
4478 |
|
4479 sock = fileno(__FILEVal(t)); |
|
4480 ret = getsockname(sock, (struct sockaddr *)__byteArrayVal(socketAddress), &sockaddr_size); |
|
4481 if (ret < 0) { |
|
4482 DBGPRINTF(("SOCKET: getsocketname failed errno=%d\n", errno)); |
|
4483 error = __MKSMALLINT(errno); |
|
4484 } |
|
4485 err:; |
|
4486 #else /* NO_SOCKET */ |
|
4487 error = @symbol(notImplemented); |
|
4488 #endif /* NO_SOCKET */ |
|
4489 %}. |
|
4490 error notNil ifTrue:[ |
|
4491 ^ self errorReporter reportOn:error |
|
4492 ]. |
|
4493 ^ socketAddress copyFrom:5 to:8 |
|
4494 ! |
|
4495 |
4451 isActive |
4496 isActive |
4452 "return true, if the receiver has a connection" |
4497 "return true, if the receiver has a connection" |
4453 |
4498 |
4454 ^ filePointer notNil |
4499 ^ filePointer notNil |
4455 ! |
4500 ! |