Example #1
0
		inline WinChannel* create_named_pipe(const char* name, DWORD openMode,std::size_t bufferSize,uint8_t maxInstances)
		{
			std::string pipeName = prepare_name(name);
			DWORD createMode = openMode | FILE_FLAG_FIRST_PIPE_INSTANCE;
			::HANDLE hPipe = ::CreateNamedPipeA(pipeName.c_str(), createMode, PIPE_TYPE_BYTE | PIPE_WAIT, maxInstances, bufferSize, bufferSize, 0, NULL);
			validate<std::runtime_error>(INVALID_HANDLE_VALUE != hPipe, "Can not create pipe");
			validate<std::runtime_error>(::ConnectNamedPipe(hPipe,NULL),"Can't listen clients");
			return new WinChannel(hPipe, createMode );
		}
Example #2
0
tstring CreateFilePath(const tstring& rsName)
{
	TCHAR szPath[_MAX_PATH];
	::GetModuleFileName(g_hInstance, szPath, _MAX_PATH);

	TCHAR* p = _tcsrchr(szPath, _T('\\'));
	if (p)
	{
		*p = 0;
	}

	tstring s(rsName);
	prepare_name(s);
	tostringstream o;
	o << szPath << _T("\\Quotes\\") << s;
	return o.str();
}
Example #3
0
		inline WinChannel* connect_named_pipe(const char* name, DWORD connectMode) {
			std::string pipeName = prepare_name(name);
			::HANDLE hPipe = ::CreateFileA(pipeName.c_str(), connectMode, 0, NULL, OPEN_EXISTING, 0, NULL);
			validate<std::runtime_error>(INVALID_HANDLE_VALUE != hPipe, std::string("Can not connect to")+name);
			return new WinChannel(hPipe,connectMode);
		}