43#ifndef LASS_GUARDIAN_OF_INCLUSION_IO_MESSAGE_PIPE_H
44#define LASS_GUARDIAN_OF_INCLUSION_IO_MESSAGE_PIPE_H
54 class MessagePipeImpl;
66 static constexpr size_t infinite = size_t(-1);
68 MessagePipe(
size_t maxMessageSize = 0);
72 bool connect(
const char* pipeName,
size_t msecTimeout=infinite);
73 bool accept(
size_t msecTimeout=infinite);
76 const char* name()
const;
77 bool operator!()
const;
79 bool send(
const void* out,
size_t size,
size_t msecTimeout=infinite)
const;
80 bool receive(
void* in,
size_t size,
size_t msecTimeout=infinite)
const;
81 bool transact(
const void* out,
size_t outSize,
void* in,
size_t inSize,
size_t msecTimeout=infinite)
const;
84 MessagePipe(
const MessagePipe&);
85 MessagePipe& operator=(
const MessagePipe&);
86 impl::MessagePipeImpl* pimpl_;
90template <
typename MessageType>
94 typedef MessageType TMessage;
95 static constexpr size_t infinite = MessagePipe::infinite;
97 TypedMessagePipe(): pipe_(sizeof(TMessage)) {}
99 bool create() {
return pipe_.create(); }
100 bool connect(
const char* pipeName,
size_t msecTimeout=infinite) {
return pipe_.connect(pipeName, msecTimeout); }
101 bool accept(
size_t msecTimeout=infinite) {
return pipe_.accept(msecTimeout); }
102 void close() { pipe_.close(); }
104 const char* name()
const {
return pipe_.name(); }
105 bool operator!()
const {
return !pipe_; }
107 bool send(
const TMessage& out,
size_t msecTimeout=infinite)
const {
return pipe_.send(&out,
sizeof(TMessage), msecTimeout); }
108 bool receive(TMessage& in,
size_t msecTimeout=infinite)
const {
return pipe_.receive(&in,
sizeof(TMessage), msecTimeout); }
109 bool transact(
const TMessage& out, TMessage& in,
size_t msecTimeout=infinite)
const {
return pipe_.transact(&out,
sizeof(TMessage), &in,
sizeof(TMessage), msecTimeout); }
#define LASS_DLL
DLL interface: import or export symbols?
streams, binary streams, vrmlstreams, ...
Library for Assembled Shared Sources.