Пример #1
0
	ProcessWindowsImpl(RuntimeRef runtime, LoggerRef logger, const std::string& dir) :
		Process(runtime, logger, dir),
/*
		hStdInput(),
		hStdOutput(),
		hStdError),
		stdOutDone(false),
		stdErrDone(false),
*/
		started(false) {
		ZeroMemory(&si, sizeof(si));
		si.cb = sizeof(si);
/*
		if(redirect) {
			// See http://support.microsoft.com/kb/190351
			// TODO setup handles
			si.dwFlags = STARTF_USESTDHANDLES;
			si.hStdInput  = hStdInput;
			si.hStdOutput = hStdOutout;
			si.hStdError  = hStdError;
		}
*/
		ZeroMemory(&pi, sizeof(pi));
		TRACE_OBJECT_NEW("ProcessWin32");
	}
Пример #2
0
	LinkWindowsImpl(bool server, LinkGroupRef group, LoggerRef logger, const std::string& dir, const std::string& name, const std::string& alias) :
		Link(),
		logger(logger),
		group(group),
		name(name),
		full("\\\\.\\pipe\\" + name),
		alias(alias),
		server(server),
		pipe(INVALID_HANDLE_VALUE) {
		TRACE_OBJECT_NEW("LinkWindowsImpl");

		if (server) {
			pipe = CreateNamedPipe(full.c_str(), PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_WAIT, 
				pipeInstances, bufferSize * sizeof(TCHAR), bufferSize * sizeof(TCHAR), pipeTimeout, NULL);
			if (pipe == INVALID_HANDLE_VALUE) {
				logger->systemError("CreateNamedPipe", full);
				return;
			}
			
			connectOverlap.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
			BOOL error = ConnectNamedPipe(pipe, &connectOverlap);
			if (error) {
				logger->systemError("ConnectNamedPipe", full);
				CloseHandle(pipe);
				return;
			}
		} else {
			pipe = CreateFile(full.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 
				FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
			if (pipe == INVALID_HANDLE_VALUE) {
				logger->systemError("CreateFile", full);
				return;
			}
		}
	}
Пример #3
0
 LinkLinuxImpl(bool server, LinkGroupRef group, LoggerRef logger, const std::string& dir, const std::string& name, const std::string& alias) :
     Link(),
     logger(logger),
     group(group),
     pin(PipePosix::create(server, true, logger, dir, name + getExt(server), alias + getExt(server) + "In")),
     pout(PipePosix::create(server, false, logger, dir, name + getExt(!server), alias + getExt(!server) + "Out")),
     name(name),
     alias(alias) {
     TRACE_OBJECT_NEW("LinkLinuxImpl");
 }
Пример #4
0
Process::Process(RuntimeRef runtime, LoggerRef logger, const std::string& dir) :
	name(Berkelium::Util::randomId()),
	group(getLinkGroup(runtime)),
	channels(Ipc::ChannelGroup::createGroup(logger, dir, Util::randomId(), "process", group, true)),
	ipc(channels ? channels->createChannel("process.ipc") : NULL),
	out(runtime, LogType::StdOut),
	err(runtime, LogType::StdErr),
	bufout(),
	buferr(),
	logger(logger) {
	TRACE_OBJECT_NEW("Process");
}
Пример #5
0
	ChannelImpl(LoggerRef logger, int32_t id, ChannelGroupRef group, const std::string& alias) :
		Channel(),
		group(group),
		logger(logger),
		alias(alias),
		reverseRef(),
		reverseWRef(),
		self(),
		cb(),
		messages(),
		reading(false),
		id(id) {
		TRACE_OBJECT_NEW("ChannelImpl");
	}
Пример #6
0
	LogDelegateImpl() :
		LogDelegate() {
		TRACE_OBJECT_NEW("LogDelegateImpl");
	}
Пример #7
0
Tab::Tab() {
	TRACE_OBJECT_NEW("Tab");
}
Пример #8
0
ChannelCallback::ChannelCallback() {
	TRACE_OBJECT_NEW("ChannelCallback");
}
Пример #9
0
Channel::Channel() {
	TRACE_OBJECT_NEW("Channel");
}
Пример #10
0
Instance::Instance() {
	TRACE_OBJECT_NEW("Instance");
}