Core: UnixSocket (AF_UNIX) implementation (#325)

* 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
This commit is contained in:
İsmail Yılmaz 2025-12-06 11:46:50 +00:00 committed by GitHub
parent 09a272d7f7
commit 962dd7f37c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 537 additions and 184 deletions

View file

@ -0,0 +1,33 @@
#include <Core/Core.h>
using namespace Upp;
CONSOLE_APP_MAIN
{
#ifdef PLATFORM_POSIX
const String& path = "/tmp/upp-unixsocket.sock";
Socket server;
if(!server.ListenFileSystem(path, 5)) {
Cout() << "Unable to initialize server socket!\n";
SetExitCode(1);
return;
}
Cout() << "Waiting for requests..\n";
for(;;) {
Socket s;
if(s.Accept(server)) {
String w = s.GetLine();
Cout() << "Request: " << w << " from: " << s.GetPeerPid() << '\n';
if(w == "time")
s.Put(AsString(GetSysTime()));
else
s.Put(AsString(3 * atoi(~w)));
s.Put("\n");
}
}
#else
Cout() << "This example requires a POSIX compliant operating system...\r\n"
SetExitCode(1);
#endif
}