code: public synchronized int putMessage(JsMessage message, CommsConnection commsConnection, Conversation conversation)
        throws MessageCopyFailedException,
               IncorrectMessageTypeException,
               MessageEncodeFailedException,
               UnsupportedEncodingException,
               SIConnectionDroppedException
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "putMessage",
                                             new Object[]{message, commsConnection, conversation});
  
        int messageLength = putMessgeWithoutEncode(encodeFast(message, commsConnection, conversation));
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "putMessage", messageLength);
        return messageLength;
     }
docs: Puts a message into the byte buffer using the <code>encodeFast()</code> method of encoding
  messages. This method takes account of any <i>capabilities</i> negotiated at the point the
  connection was established.
  <p>This method is used for putting an entire message into the buffer. There are more efficient
  ways of doing this to aid the Java memory manager that were introduced in FAP9. These
  methods should be used in favour of this one. @see putDataSlice().
  
  @param message The message to encode.
  @param commsConnection The comms connection which is passed to MFP.
  @param conversation The conversation over which the encoded message data is to be transferred.
  
  @return Returns the message length.
  
  @exception MessageCopyFailedException
  @exception IncorrectMessageTypeException
  @exception MessageEncodeFailedException
  @exception UnsupportedEncodingException
  @exception SIConnectionDroppedException