ACE wrappered a lot of IPC facilities provided by current mainstream OS, such as Unix/Linux, Win32, QNX etc.
I would like to categorize them into three based on application contexts, as
1. Communication for Client and Server
ACE_Socket
- Unix Socket
- TCP/IP Socket
ACE_SPIPE & ACE_UPIPE
- * ACE_UPIPE ( upipe the same address can be reused by two processes to listen on )
- Named Pipe ( on win32)
- SPIPE + Connld ( on Unix/Linux ), that is so called "Named SPIPE"
ACE_TLI
- This is another equivalence API to BSD socket
ACE_Mem
- Signal + MMAP ( on Unix/Linux )
- ....
2. Communication for Cooperation Processes
2.1 Master drivern Slave process model
ACE_FIFO_Recv & ACE_FIFO_Send ( semiduplex )
ACE_Pipe ( full duplex )
- TCP socket ( for win32 )
- SPIPE ( for Unix/Linux platform has spipe support )
- socketpair ( for Unix/Linux platform without spipe support)
ACE_TTY_IO
- This shall only support on Linux/Unix ( ??? )
2.2 Concurrent co-working process model
ACE_Shared_Memory
- BSD's MMAP
- SVR4's SV_Shared_Memeory
SV_Semphore
SV_MessageQueue
3. Misc
File_IO
Signal
**************************
From ACE_Pipe's implementation, we can see that, the most classical semiduplex un-named pipe is deprecated, as no wrapper for it at all. Because, this is replaced by full duplex pipe as ACE_Pipe