コード例 #1
0
ファイル: reader.cpp プロジェクト: sendomin/Drawpile
MessageRecord Reader::readNext()
{
	MessageRecord msg;

	if(!readNextToBuffer(_msgbuf))
		return msg;

	protocol::Message *message;
	switch(_formatversion) {
		// see protocol changelog in doc/protocol.md
		case version32(11, 3):
		case version32(11, 2):
			message = compat::deserializeV11((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;
		default:
			message = protocol::Message::deserialize((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;
	}

	if(message) {
		msg.status = MessageRecord::OK;
		msg.message = message;
	} else {
		msg.status = MessageRecord::INVALID;
		msg.error.len = protocol::Message::sniffLength(_msgbuf.constData());
		msg.error.type = protocol::MessageType(_msgbuf.at(2));
	}

	return msg;
}
コード例 #2
0
ファイル: reader.cpp プロジェクト: LionsPhil/Drawpile
MessageRecord Reader::readNext()
{
	MessageRecord msg;

	if(!readNextToBuffer(_msgbuf))
		return msg;

	protocol::Message *message;
	if(_compat && _formatversion != version32(DRAWPILE_PROTO_MAJOR_VERSION, DRAWPILE_PROTO_MINOR_VERSION)) {

		// see protocol changelog in doc/protocol.md
		switch(_formatversion) {
		case version32(15, 5):
			message = compat::deserializeV15_5((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(14, 5):
		case version32(13, 5):
			message = compat::deserializeV14((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(12, 4):
			message = compat::deserializeV12((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(11, 3):
		case version32(11, 2):
			message = compat::deserializeV11((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(10, 2):
		case version32(9, 2):
		case version32(8, 1):
		case version32(7, 1):
			message = compat::deserializeV10((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		default:
			message = protocol::Message::deserialize((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;
		}
	} else {
		message = protocol::Message::deserialize((const uchar*)_msgbuf.constData(), _msgbuf.length());
	}

	if(message) {
		msg.status = MessageRecord::OK;
		msg.message = message;
	} else {
		msg.status = MessageRecord::INVALID;
		msg.error.len = protocol::Message::sniffLength(_msgbuf.constData());
		msg.error.type = protocol::MessageType(_msgbuf.at(2));
	}

	return msg;
}
コード例 #3
0
ファイル: reader.cpp プロジェクト: EvilKitty3/Drawpile
MessageRecord Reader::readNext()
{
	MessageRecord msg;

	if(!readNextToBuffer(_msgbuf))
		return msg;

	auto *message = protocol::Message::deserialize((const uchar*)_msgbuf.constData(), _msgbuf.length());

	if(message) {
		msg.status = MessageRecord::OK;
		msg.message = message;
	} else {
		msg.status = MessageRecord::INVALID;
		msg.error.len = protocol::Message::sniffLength(_msgbuf.constData());
		msg.error.type = protocol::MessageType(_msgbuf.at(2));
	}

	return msg;
}
コード例 #4
0
ファイル: reader.cpp プロジェクト: Xiangyu-Xue/Drawpile
MessageRecord Reader::readNext()
{
	MessageRecord msg;

	if(!readNextToBuffer(m_msgbuf))
		return msg;

	protocol::Message *message;
#if 0 // TODO
	if(m_formatversion != version32(DRAWPILE_PROTO_MAJOR_VERSION, DRAWPILE_PROTO_MINOR_VERSION)) {


		// see protocol changelog in doc/protocol.md
		switch(_formatversion) {
		case version32(15, 5):
			message = compat::deserializeV15_5((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(14, 5):
		case version32(13, 5):
			message = compat::deserializeV14((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(12, 4):
			message = compat::deserializeV12((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(11, 3):
		case version32(11, 2):
			message = compat::deserializeV11((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		case version32(10, 2):
		case version32(9, 2):
		case version32(8, 1):
		case version32(7, 1):
			message = compat::deserializeV10((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;

		default:
			message = protocol::Message::deserialize((const uchar*)_msgbuf.constData(), _msgbuf.length());
			break;
		}

		qWarning("TODO: recording compatability mode not yet implemented!");
		message = 0;
	} else {
		message = protocol::Message::deserialize((const uchar*)m_msgbuf.constData(), m_msgbuf.length(), true);
	}
#endif
	message = protocol::Message::deserialize((const uchar*)m_msgbuf.constData(), m_msgbuf.length(), true);

	if(message) {
		msg.status = MessageRecord::OK;
		msg.message = message;
	} else {
		msg.status = MessageRecord::INVALID;
		msg.error.len = protocol::Message::sniffLength(m_msgbuf.constData());
		msg.error.type = protocol::MessageType(m_msgbuf.at(2));
	}

	return msg;
}