//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-//
        bool OSX_MSF_Shell_Bind_32::initialize(const unsigned int &bport)
        {
            port = bport;

            Core::Logger::logIt ( "init payload... " );
            initPayload();
            Core::Logger::logItLn ( "done" );

            return true;
        }
Exemple #2
0
/** Packs a message into a zeromq message */
static zmq::message_t pack(const Message &msg) {
    ::capnp::MallocMessageBuilder builder;
    auto sermsg = builder.initRoot<serialize::Message>();
    sermsg.setEndpoint(msg.endpoint());
    sermsg.setExpectsAnswer(msg.expectsAnswer());
    sermsg.setId(msg.id());
    sermsg.setOriginator(msg.originator());
    sermsg.setSchema(msg.schema());
    sermsg.setType(static_cast<int>(msg.type()));
    if (!msg.data().empty()) {
        auto payload_builder = sermsg.initPayload(msg.data().size());
        memcpy(&payload_builder[0], msg.data().data(), msg.data().size());
    }
    auto data = capnp::messageToFlatArray(builder);
    auto byte_size = data.size() * sizeof(capnp::word);
    zmq::message_t ret(byte_size);
    memcpy(ret.data(), data.begin(), byte_size);
    return ret;
}
bool TalkyMessage::deSerialise(char* &message, int &remainingBytesReceived)
{
	try {
		memcpy(Company, message, 2);
		
		memcpy(Protocol, message+2, 2);
		memcpy(&Version, message+4, 2);
		memcpy(&Timestamp, message+6, 4);
		memcpy(&Type, message+10, 2);
		
		unsigned short tempLength;
		memcpy(&tempLength, message+12, 2);
		initPayload(tempLength);
		
		if (getTotalLength() > remainingBytesReceived)
			return false;
		
		memcpy(Payload, message+14, PayloadLength);
		
		if (message[getTotalLength()-1] != OFXTALKY_ENDCHAR)
		{
			throw("TalkyMessage.cpp: End charachter of message is wrong when deserialising");
			return false;
		}
		
		
	}
	catch (string e) {
		throw("TalkyMessage.cpp: Failed to deserialise due to exception, likely memory overflow");
		return false;
	}
	
	message += getTotalLength();
	remainingBytesReceived -= getTotalLength();
	
	return true;
}
void TalkyMessage::setPayload(char* const message, unsigned short length)
{
	initPayload(length);
	memcpy(Payload, message, length);
}