OutboundPacketStream& OutboundPacketStream::operator<<( const BeginMessage& rhs ) { if( IsMessageInProgress() ) throw MessageInProgressException(); CheckForAvailableMessageSpace( rhs.addressPattern ); messageCursor_ = BeginElement( messageCursor_ ); strcpy( messageCursor_, rhs.addressPattern ); unsigned long rhsLength = strlen(rhs.addressPattern); messageCursor_ += rhsLength + 1; // zero pad to 4-byte boundary unsigned long i = rhsLength + 1; while( i & 0x3 ){ *messageCursor_++ = '\0'; ++i; } argumentCurrent_ = messageCursor_; typeTagsCurrent_ = end_; messageIsInProgress_ = true; return *this; }
OutboundPacketStream& OutboundPacketStream::operator<<( const BeginMessage& rhs ) { check( !IsMessageInProgress() ) state_ = CheckForAvailableMessageSpace( rhs.addressPattern ); if(state_ == SUCCESS) { messageCursor_ = BeginElement( messageCursor_ ); std::strcpy( messageCursor_, rhs.addressPattern ); std::size_t rhsLength = std::strlen(rhs.addressPattern); messageCursor_ += rhsLength + 1; // zero pad to 4-byte boundary std::size_t i = rhsLength + 1; while( i & 0x3 ){ *messageCursor_++ = '\0'; ++i; } argumentCurrent_ = messageCursor_; typeTagsCurrent_ = end_; messageIsInProgress_ = true; } return *this; }