mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
* Core: UnixSocket (AF_UNIX) implementation Core/UnixSocket: GetPeerPid refactored reference/UnixSocketClient: Use default socket type for connection reference/UnixSocketServer: Use default socket type for listen Core: UnixSocket API docs & cleanup Core: UnixSocket friend declaration guarded using ifdefs. * Core: UnixSocket, GetPeerPid() refactored, docs updated * Core: TcpSocket renamed as Socket and added unix domain socket support. Cleanup Updated API docs. * Core: UnixSocket entry removed from API docs. * Core: Socket/SocketWaitEvent API docs cosmetics. * Core: Socket cosmetics
51 lines
No EOL
1 KiB
C++
51 lines
No EOL
1 KiB
C++
#include <Core/Core.h>
|
|
|
|
using namespace Upp;
|
|
|
|
CONSOLE_APP_MAIN
|
|
{
|
|
#ifdef PLATFORM_POSIX
|
|
|
|
StdLogSetup(LOG_COUT|LOG_FILE);
|
|
|
|
String path = Format("/tmp/upp-unixsocket-test-%d", getpid());
|
|
|
|
Socket server, client;
|
|
|
|
// Test server listen
|
|
if(!server.ListenFileSystem(path)) {
|
|
LOG("Server listen failed: " << server.GetErrorDesc());
|
|
Exit(1);
|
|
}
|
|
|
|
// Test client connect
|
|
if(!client.ConnectFileSystem(path)) {
|
|
LOG("Client connect failed: " << client.GetErrorDesc());
|
|
Exit(1);
|
|
}
|
|
|
|
// Test data exchange
|
|
String test_data = "Hello, world!";
|
|
client.Put(test_data + "\n");
|
|
|
|
Socket accepted;
|
|
if(!accepted.Accept(server)) {
|
|
LOG("Accept failed: " << accepted.GetErrorDesc());
|
|
Exit(1);
|
|
}
|
|
|
|
String received = accepted.GetLine();
|
|
DUMP(received);
|
|
|
|
ASSERT(received == test_data);
|
|
|
|
// Test peer PID (on supported platforms)
|
|
int pid = accepted.GetPeerPid();
|
|
DUMP(pid);
|
|
if(pid != -1)
|
|
ASSERT(pid == getpid()); // Should be our own process in this test
|
|
|
|
LOG("=========== OK");
|
|
|
|
#endif
|
|
} |