fup fifos

master
Сергей Маринкевич 2 months ago
parent 0712460db0
commit 66c4e5190b

@ -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уровень: скелет поверх того же канала.

Loading…
Cancel
Save