Пример #1
0
void
CIpcServerProxy::handleData(const CEvent&, void*)
{
	LOG((CLOG_DEBUG "start ipc handle data"));

	UInt8 code[4];
	UInt32 n = m_stream.read(code, 4);
	while (n != 0) {

		LOG((CLOG_DEBUG "ipc read: %c%c%c%c",
			code[0], code[1], code[2], code[3]));
		
		CIpcMessage* m = nullptr;
		if (memcmp(code, kIpcMsgLogLine, 4) == 0) {
			m = parseLogLine();
		}
		else if (memcmp(code, kIpcMsgShutdown, 4) == 0) {
			m = new CIpcShutdownMessage();
		}
		else {
			LOG((CLOG_ERR "invalid ipc message"));
			disconnect();
		}
		
		// don't delete with this event; the data is passed to a new event.
		CEvent e(getMessageReceivedEvent(), this, NULL, CEvent::kDontFreeData);
		e.setDataObject(m);
		EVENTQUEUE->addEvent(e);

		n = m_stream.read(code, 4);
	}
	
	LOG((CLOG_DEBUG "finished ipc handle data"));
}
Пример #2
0
void
CIpcClient::handleMessageReceived(const CEvent& e, void*)
{
	CEvent event(getMessageReceivedEvent(), this);
	event.setDataObject(e.getDataObject());
	EVENTQUEUE->addEvent(event);
}
Пример #3
0
void
CIpcClientProxy::handleData(const CEvent&, void*)
{
	// don't allow the dtor to destroy the stream while we're using it.
	CArchMutexLock lock(m_readMutex);

	LOG((CLOG_DEBUG "start ipc handle data"));

	UInt8 code[4];
	UInt32 n = m_stream.read(code, 4);
	while (n != 0) {

		LOG((CLOG_DEBUG "ipc read: %c%c%c%c",
			code[0], code[1], code[2], code[3]));

		CIpcMessage* m = nullptr;
		if (memcmp(code, kIpcMsgHello, 4) == 0) {
			m = parseHello();
		}
		else if (memcmp(code, kIpcMsgCommand, 4) == 0) {
			m = parseCommand();
		}
		else {
			LOG((CLOG_ERR "invalid ipc message"));
			disconnect();
		}

		// don't delete with this event; the data is passed to a new event.
		CEvent e(getMessageReceivedEvent(), this, NULL, CEvent::kDontFreeData);
		e.setDataObject(m);
		EVENTQUEUE->addEvent(e);

		n = m_stream.read(code, 4);
	}

	LOG((CLOG_DEBUG "finished ipc handle data"));
}