public synchronized int putMEMEMessageWithoutEncode(AbstractMessage memeMessage,
                                                        List<DataSlice> messageParts) {
        if (tc.isEntryEnabled())
            SibTr.entry(this, tc, "putMEMEMessageWithoutEncode",
                                           new Object[] { memeMessage, messageParts });

        int messageLength = 0;
        // Now we have a list of MessagePart objects. First work out the overall length.
        for (int x = 0; x < messageParts.size(); x++) {
            messageLength += messageParts.get(x).getLength();
        }

        if (tc.isDebugEnabled())
            SibTr.debug(this, tc, "Message is " + messageLength + "byte(s) in length");

        // Write the length
        // GRRRRRRRRRRRRRRRR Read the FAP Clifford
        putInt(messageLength);
        // Write the control flag
        if (memeMessage.isControlMessage())
            put(CommsConstants.MEME_CONTROLMESSAGE); // Control message flag
        else
            put(CommsConstants.MEME_JSMESSAGE); // Message data flag

        // Now take the message parts and wrap them into byte buffers using the offset's supplied
        for (int x = 0; x < messageParts.size(); x++) {
            DataSlice messPart = messageParts.get(x);
            if (tc.isDebugEnabled())
                SibTr.debug(tc, "DataSlice[" + x + "]: " +
                                                  "Array: " + messPart.getBytes() + ", " +
                                                  "Offset: " + messPart.getOffset() + ", " +
                                                  "Length: " + messPart.getLength());

            wrap(messPart.getBytes(), messPart.getOffset(), messPart.getLength());
        }

        if (tc.isEntryEnabled())
            SibTr.exit(this, tc, "putMEMEMessageWithoutEncode", messageLength);
        return messageLength;
    }
public synchronized int putMEMEMessageWithoutEncode ( AbstractMessage memeMessage , List < DataSlice > messageParts ) { if ( tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "putMEMEMessageWithoutEncode" , new Object [ ] { memeMessage , messageParts } ) ; int messageLength = 0 ; for ( int x = 0 ; x < messageParts . size ( ) ; x ++ ) { messageLength += messageParts . get ( x ) . getLength ( ) ; } if ( tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "Message is " + messageLength + "byte(s) in length" ) ; putInt ( messageLength ) ; if ( memeMessage . isControlMessage ( ) ) put ( CommsConstants . MEME_CONTROLMESSAGE ) ; else put ( CommsConstants . MEME_JSMESSAGE ) ; for ( int x = 0 ; x < messageParts . size ( ) ; x ++ ) { DataSlice messPart = messageParts . get ( x ) ; if ( tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "DataSlice[" + x + "]: " + "Array: " + messPart . getBytes ( ) + ", " + "Offset: " + messPart . getOffset ( ) + ", " + "Length: " + messPart . getLength ( ) ) ; wrap ( messPart . getBytes ( ) , messPart . getOffset ( ) , messPart . getLength ( ) ) ; } if ( tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "putMEMEMessageWithoutEncode" , messageLength ) ; return messageLength ; }
This method puts a message into the buffer using the already encoded messageParts parameter.
This is for the case where the encoding has already been performed. The memeMessage parameter
is used to ensure the correct message type is worked out.

@param memeMessage
@param messageParts

@return Returns the overall length of the message.