8#ifndef INCLUDED_BALB_PIPECONTROLCHANNEL
9#define INCLUDED_BALB_PIPECONTROLCHANNEL
283#include <balscm_version.h>
295#include <bsl_functional.h>
296#include <bsl_string.h>
297#include <bsl_vector.h>
340 enum BackgroundThreadState {
374 void backgroundProcessor();
378 int createNamedPipe(
const char *
pipeName);
388 bool dispatchLeftoverMessage();
391 void destroyNamedPipe();
404 int sendEmptyMessage();
408 PipeControlChannel(
const PipeControlChannel&);
409 PipeControlChannel& operator=(
const PipeControlChannel&);
474 template <
class STRING_TYPE>
478 template <
class STRING_TYPE>
551 static const char *
flatten(
char *cString);
552 static const char *
flatten(
const char *cString);
555 static const char *
flatten(
const std::string&
string);
556#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
557 static const char *
flatten(
const std::pmr::string&
string);
567 template <
class TYPE>
568 static const char *
flatten(
const TYPE&);
580template <
class STRING_TYPE>
587template <
class STRING_TYPE>
599 return d_permissions;
636 return string.c_str();
642 return string.c_str();
645#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
648 const std::pmr::string&
string)
650 return string.c_str();
665 BSLMF_ASSERT((
"Unsupported parameter type." && !
sizeof(TYPE)));
Definition balb_pipecontrolchannel.h:316
int d_readFd
Definition balb_pipecontrolchannel.h:360
void setPermissions(int permissions)
int d_writeFd
Definition balb_pipecontrolchannel.h:361
static const int k_DEFAULT_PERMISSIONS
Definition balb_pipecontrolchannel.h:331
struct balb::PipeControlChannel::@0::@2 d_windows
PipeControlChannel(const ControlCallback &callback, bslma::Allocator *basicAllocator=0)
const bsl::string & pipeName() const
Return the fully qualified system name of the pipe.
Definition balb_pipecontrolchannel.h:603
int start(const char *pipeName)
int start(const char *pipeName, const bslmt::ThreadAttributes &attributes)
void * d_handle
Definition balb_pipecontrolchannel.h:365
bslma::Allocator * allocator() const
Definition balb_pipecontrolchannel.h:611
int permissions() const
Definition balb_pipecontrolchannel.h:597
struct balb::PipeControlChannel::@0::@1 d_unix
bsl::function< void(const bslstl::StringRef &message)> ControlCallback
Definition balb_pipecontrolchannel.h:325
PipeControlChannel(const ControlCallback &callback, int permissions, bslma::Allocator *basicAllocator=0)
Definition bslstl_string.h:1252
allocator_type get_allocator() const BSLS_KEYWORD_NOEXCEPT
Return the allocator used by this string to supply memory.
Definition bslstl_string.h:7423
Forward declaration.
Definition bslstl_function.h:946
Definition bslstl_vector.h:1120
VALUE_TYPE * iterator
Definition bslstl_vector.h:1152
Definition bslma_allocator.h:545
Definition bslmt_threadattributes.h:361
Definition bsls_atomic.h:744
Definition bslstl_stringref.h:374
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition balb_controlmanager.h:144
Definition balb_pipecontrolchannel.h:546
static const char * flatten(char *cString)
Return the specified cString.
Definition balb_pipecontrolchannel.h:622
@ k_GROUP_READ
Definition bdls_filepermissions.h:162
@ k_OWNER_READ
Definition bdls_filepermissions.h:157
@ k_OTHERS_WRITE
Definition bdls_filepermissions.h:168
@ k_OWNER_WRITE
Definition bdls_filepermissions.h:158
@ k_OTHERS_READ
Definition bdls_filepermissions.h:167
@ k_GROUP_WRITE
Definition bdls_filepermissions.h:163
Imp::Handle Handle
Definition bslmt_threadutil.h:389