fup fifos
This commit is contained in:
+3
-1
@@ -11,7 +11,9 @@ int main() {
|
||||
mkfifo("/tmp/rpc_out", 0666);
|
||||
|
||||
// IPC‑уровень: канал поверх pipe.
|
||||
IpcPipeChannel ch("/tmp/rpc_in", "/tmp/rpc_out");
|
||||
// Клиент пишет в fifo, который читает сервер (rpc_in),
|
||||
// и читает из fifo, в который пишет сервер (rpc_out).
|
||||
IpcPipeChannel ch("/tmp/rpc_out", "/tmp/rpc_in");
|
||||
|
||||
// RPC‑уровень: прокси поверх канала.
|
||||
MyServiceProxy proxy(ch);
|
||||
|
||||
@@ -8,13 +8,16 @@
|
||||
|
||||
// IPC‑канал поверх именованных pipe.
|
||||
// Инкапсулирует работу с файловыми дескрипторами и обмен сообщениями IpcMessage.
|
||||
// readPipe — тот FIFO, который этот endpoint читает; writePipe — тот, в который пишет.
|
||||
|
||||
class IpcPipeChannel : public RpcChannel {
|
||||
public:
|
||||
IpcPipeChannel(const char* writePipe, const char* readPipe) {
|
||||
IpcPipeChannel(const char* readPipe, const char* writePipe) {
|
||||
// Канал не создаёт FIFO, только открывает.
|
||||
fdOut_ = ::open(writePipe, O_WRONLY);
|
||||
fdIn_ = ::open(readPipe, O_RDONLY);
|
||||
// Открываем оба конца как O_RDWR, чтобы избежать блокировок на open(O_RDONLY/O_WRONLY).
|
||||
// При этом логически читаем только из readPipe, а пишем только в writePipe.
|
||||
fdIn_ = ::open(readPipe, O_RDWR);
|
||||
fdOut_ = ::open(writePipe, O_RDWR);
|
||||
}
|
||||
|
||||
~IpcPipeChannel() override {
|
||||
|
||||
@@ -11,6 +11,7 @@ int main() {
|
||||
mkfifo("/tmp/rpc_out", 0666);
|
||||
|
||||
// IPC‑уровень: канал поверх pipe.
|
||||
// Сервер читает из rpc_in и пишет в rpc_out.
|
||||
IpcPipeChannel ch("/tmp/rpc_in", "/tmp/rpc_out");
|
||||
|
||||
// RPC‑уровень: скелет поверх того же канала.
|
||||
|
||||
Reference in New Issue
Block a user