@@ -22,6 +22,7 @@ struct IPC_EXPORT chan_impl {
22
22
static ipc::handle_t inited ();
23
23
24
24
static bool connect (ipc::handle_t * ph, char const * name, unsigned mode);
25
+ static bool connect (ipc::handle_t * ph, prefix, char const * name, unsigned mode);
25
26
static bool reconnect (ipc::handle_t * ph, unsigned mode);
26
27
static void disconnect (ipc::handle_t h);
27
28
static void destroy (ipc::handle_t h);
@@ -54,6 +55,10 @@ class chan_wrapper {
54
55
: connected_{this ->connect (name, mode)} {
55
56
}
56
57
58
+ chan_wrapper (prefix pref, char const * name, unsigned mode = ipc::sender)
59
+ : connected_{this ->connect (pref, name, mode)} {
60
+ }
61
+
57
62
chan_wrapper (chan_wrapper&& rhs) noexcept
58
63
: chan_wrapper{} {
59
64
swap (rhs);
@@ -102,6 +107,11 @@ class chan_wrapper {
102
107
detail_t::disconnect (h_); // clear old connection
103
108
return connected_ = detail_t::connect (&h_, name, mode_ = mode);
104
109
}
110
+ bool connect (prefix pref, char const * name, unsigned mode = ipc::sender | ipc::receiver) {
111
+ if (name == nullptr || name[0 ] == ' \0 ' ) return false ;
112
+ detail_t::disconnect (h_); // clear old connection
113
+ return connected_ = detail_t::connect (&h_, pref, name, mode_ = mode);
114
+ }
105
115
106
116
/* *
107
117
* Try connecting with new mode flags.
0 commit comments