Пример #1
0
bool
get_message_timestamp ( pn_message_t * msg, double * timestamp )
{
  pn_data_t * annotations = pn_message_annotations ( msg );
  pn_data_rewind ( annotations );
  pn_data_next   ( annotations );
  if ( PN_MAP == pn_data_type ( annotations ) )
  {
    int len = pn_data_get_map ( annotations );
    pn_data_enter ( annotations );
    for (int i = 0; i < len; i += 2 ) 
    {
      pn_data_next ( annotations );
      pn_type_t type = pn_data_type ( annotations );
      if ( PN_STRING == type ) 
      {
        pn_bytes_t string = pn_data_get_symbol ( annotations );
        if ( ! strncmp ( "timestamp", string.start, string.size ) )
        {
          pn_data_next ( annotations );
          type = pn_data_type ( annotations );
          if ( type == PN_DOUBLE )
          {
            * timestamp = pn_data_get_double ( annotations );
            return true;
          }
        }
      }
    }
  }

  return false;
}
Пример #2
0
void amqp::Sender::_addAnnotationsToMessage(pn_message_t *pnmessage, IMessage const &message)
{
	pn_data_t *pnmessage_annotations = pn_message_annotations(pnmessage);
	pn_data_put_map(pnmessage_annotations);
	pn_data_enter(pnmessage_annotations);

	MessageMeta::const_iterator i = message.getAnnotations().begin();
	for (; i != message.getAnnotations().end(); ++i) {
		_serializeMessageMeta(pnmessage_annotations, (*i));
	}

	pn_data_exit(pnmessage_annotations);
}
Пример #3
0
 impl(pn_message_t *msg) {
     body.reset(pn_message_body(msg));
     properties.reset(pn_message_properties(msg));
     annotations.reset(pn_message_annotations(msg));
     instructions.reset(pn_message_instructions(msg));
 }