From 4165c30332ba148735d726eed8cdd500a1376fbf Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 17 Oct 2007 12:48:05 +0000 Subject: Prepend the system-required prefix to the named pipe name from the configuration file. (merges [1833]) --- lib/server/WinNamedPipeStream.cpp | 26 ++++++++++++++++---------- lib/server/WinNamedPipeStream.h | 6 ++++-- 2 files changed, 20 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/server/WinNamedPipeStream.cpp b/lib/server/WinNamedPipeStream.cpp index d7e90793..fedb57d8 100644 --- a/lib/server/WinNamedPipeStream.cpp +++ b/lib/server/WinNamedPipeStream.cpp @@ -26,6 +26,8 @@ #include "MemLeakFindOn.h" +std::string WinNamedPipeStream::sPipeNamePrefix = "\\\\.\\pipe\\"; + // -------------------------------------------------------------------------- // // Function @@ -72,21 +74,23 @@ WinNamedPipeStream::~WinNamedPipeStream() // -------------------------------------------------------------------------- // // Function -// Name: WinNamedPipeStream::Accept(const char* Name) +// Name: WinNamedPipeStream::Accept(const std::string& rName) // Purpose: Creates a new named pipe with the given name, // and wait for a connection on it // Created: 2005/12/07 // // -------------------------------------------------------------------------- -void WinNamedPipeStream::Accept(const wchar_t* pName) +void WinNamedPipeStream::Accept(const std::string& rName) { if (mSocketHandle != INVALID_HANDLE_VALUE || mIsConnected) { THROW_EXCEPTION(ServerException, SocketAlreadyOpen) } - mSocketHandle = CreateNamedPipeW( - pName, // pipe name + std::string socket = sPipeNamePrefix + rName; + + mSocketHandle = CreateNamedPipeA( + socket.c_str(), // pipe name PIPE_ACCESS_DUPLEX | // read/write access FILE_FLAG_OVERLAPPED, // enabled overlapped I/O PIPE_TYPE_BYTE | // message type pipe @@ -100,7 +104,7 @@ void WinNamedPipeStream::Accept(const wchar_t* pName) if (mSocketHandle == INVALID_HANDLE_VALUE) { - BOX_ERROR("Failed to CreateNamedPipeW(" << pName << "): " << + BOX_ERROR("Failed to CreateNamedPipeA(" << socket << "): " << GetErrorMessage(GetLastError())); THROW_EXCEPTION(ServerException, SocketOpenError) } @@ -109,7 +113,7 @@ void WinNamedPipeStream::Accept(const wchar_t* pName) if (!connected) { - BOX_ERROR("Failed to ConnectNamedPipe(" << pName << "): " << + BOX_ERROR("Failed to ConnectNamedPipe(" << socket << "): " << GetErrorMessage(GetLastError())); Close(); THROW_EXCEPTION(ServerException, SocketOpenError) @@ -156,20 +160,22 @@ void WinNamedPipeStream::Accept(const wchar_t* pName) // -------------------------------------------------------------------------- // // Function -// Name: WinNamedPipeStream::Connect(const char* Name) +// Name: WinNamedPipeStream::Connect(const std::string& rName) // Purpose: Opens a connection to a listening named pipe // Created: 2005/12/07 // // -------------------------------------------------------------------------- -void WinNamedPipeStream::Connect(const wchar_t* pName) +void WinNamedPipeStream::Connect(const std::string& rName) { if (mSocketHandle != INVALID_HANDLE_VALUE || mIsConnected) { THROW_EXCEPTION(ServerException, SocketAlreadyOpen) } + + std::string socket = sPipeNamePrefix + rName; - mSocketHandle = CreateFileW( - pName, // pipe name + mSocketHandle = CreateFileA( + socket.c_str(), // pipe name GENERIC_READ | // read and write access GENERIC_WRITE, 0, // no sharing diff --git a/lib/server/WinNamedPipeStream.h b/lib/server/WinNamedPipeStream.h index aded2d59..6acd48f6 100644 --- a/lib/server/WinNamedPipeStream.h +++ b/lib/server/WinNamedPipeStream.h @@ -27,10 +27,10 @@ public: ~WinNamedPipeStream(); // server side - create the named pipe and listen for connections - void Accept(const wchar_t* Name); + void Accept(const std::string& rName); // client side - connect to a waiting server - void Connect(const wchar_t* Name); + void Connect(const std::string& rName); // both sides virtual int Read(void *pBuffer, int NBytes, @@ -61,6 +61,8 @@ private: bool mWriteClosed; bool mIsServer; bool mIsConnected; + + static std::string sPipeNamePrefix; }; #endif // WINNAMEDPIPESTREAM__H -- cgit v1.2.3