Ejemplo n.º 1
0
/*#######################################################################
 # simplechat                                        #
 ########################################################################*/
static bool simplechat_ChatMessage_list_get_seq_val_cb(uintptr_t in_data, int index, CDR_TypeCode_t type, qeo_t2d_types_t *value){

    const org_qeo_wifi_ScanList_list_seq *listEntry = (const org_qeo_wifi_ScanList_list_seq *)in_data;
    value->typeref.ref = (uintptr_t)(DDS_SEQ_ITEM_PTR(*listEntry, index));
    value->typeref.mcbs = &_sl_mcbs;

    return true;

}
Ejemplo n.º 2
0
static bool simplechat_ChatMessage_list_set_seq_val_cb(uintptr_t out_data, int index, CDR_TypeCode_t type, qeo_t2d_types_t *value){

    org_qeo_wifi_ScanList_list_seq *listEntry = (org_qeo_wifi_ScanList_list_seq *)out_data;
    
    switch(type){
        case CDR_TYPECODE_STRUCT:
            ck_assert_str_eq(value->typeref.name, org_qeo_wifi_ScanListEntry_type[0].name);
            value->typeref.ref = (uintptr_t)(DDS_SEQ_ITEM_PTR(*listEntry, index));
            value->typeref.ucbs = &_sl_ucbs;

        break;
        default:
            qeo_log_e("Unsupported type %d", type);
            return false;

    }

    return true;
}
Ejemplo n.º 3
0
void introspect_annotation (DDS_AnnotationDescriptor *adp, int after)
{
	unsigned		i;
	DDS_ReturnCode_t	ret;
	DDS_TypeDescriptor	desc;
	DDS_Parameters		pars;
	MapEntry_DDS_ObjectName_DDS_ObjectName *p;

	if (after)
		dbg_printf ("  //");

	DDS_TypeDescriptor__init (&desc);
	ret = DDS_DynamicType_get_descriptor (adp->type, &desc);
	fail_unless (ret == DDS_RETCODE_OK);

	dbg_printf ("@%s", desc.name);
	DDS_SEQ_INIT (pars);
	ret = DDS_AnnotationDescriptor_get_all_value (adp, &pars);
	fail_unless (ret == DDS_RETCODE_OK);

	if (DDS_SEQ_LENGTH (pars) == 1 &&
	    !strcmp (DDS_SEQ_ITEM (pars, 0).key, "value")) { /* Shorthand notation! */
		if (strcmp (DDS_SEQ_ITEM (pars, 0).value, "true"))
			dbg_printf ("(%s)", DDS_SEQ_ITEM (pars, 0).value);
	}
	else {
		dbg_printf ("(");
		for (i = 0; i < DDS_SEQ_LENGTH (pars); i++) {
			if (i)
				dbg_printf (", ");
			p = DDS_SEQ_ITEM_PTR (pars, i);
			dbg_printf ("%s=\"%s\"", p->key, p->value);
		}
		dbg_printf (")");
	}
	if (!after)
		dbg_printf (" ");

	DDS_Parameters__clear (&pars);
	DDS_TypeDescriptor__clear (&desc);
}
Ejemplo n.º 4
0
static void ctt_trace (char dir, DDS_ParticipantVolatileSecureMessage *m)
{
#ifdef CTT_TRACE_DATA
	DDS_CryptoToken	*cp;
	unsigned	i;
#endif
	char		buf [40];

	if (dir == 'T')
		guid_prefix_str ((GuidPrefix_t *) m->destination_participant_key, buf);
	else
		guid_prefix_str ((GuidPrefix_t *) m->message_identity.source_guid, buf);
	log_printf (SPDP_ID, 0, "CTT: %c [%s].%llu - %s",
		dir,
		buf, 
		m->message_identity.sequence_number,
		m->message_class_id);
	if (strcmp (m->message_class_id, GMCLASSID_SECURITY_PARTICIPANT_CRYPTO_TOKENS)) {
		log_printf (SPDP_ID, 0, " (%s->", entity_id_str ((EntityId_t *) (m->source_endpoint_key + 12), buf));
		log_printf (SPDP_ID, 0, "%s)", entity_id_str ((EntityId_t *) (m->destination_endpoint_key + 12), buf));
	}
	log_printf (SPDP_ID, 0, "\r\n");
#ifdef CTT_TRACE_DATA
/*	if (strcmp (m->message_class_id, GMCLASSID_SECURITY_PARTICIPANT_CRYPTO_TOKENS)) {
		log_printf (SPDP_ID, 0, "       {%s -> ",
			guid_str ((GUID_t *) m->source_endpoint_key, buf));
		log_printf (SPDP_ID, 0, "%s}\r\n",
			guid_str ((GUID_t *) m->destination_endpoint_key, buf));
	} */
	for (i = 0; i < DDS_SEQ_LENGTH (m->message_data); i++) {
		cp = DDS_SEQ_ITEM_PTR (m->message_data, i);
		log_printf (SPDP_ID, 0, "  %u: %s:\r\n", i, cp->class_id);
		if (cp->binary_value1)
			ctt_dump_binary_value (1, cp->binary_value1);
		if (cp->binary_value2)
			ctt_dump_binary_value (2, cp->binary_value2);
	}
#endif
}
Ejemplo n.º 5
0
            &ret);
    qeocore_type_free(type);
    ck_assert_int_ne(event_writer, NULL);
    ck_assert_int_eq(ret, QEO_OK);

    qeocore_data_t *sample = qeocore_writer_data_new(event_writer);
    ck_assert_int_eq(qeo_walk_tsm_for_marshal(_types, org_qeo_sample_simplechat_ChatMessage_type, (uintptr_t)&chat_msg, sample, QEO_T2D_FLAGS_ALL, &_sc_mcbs), QEO_OK); 

    ck_assert_int_eq(qeocore_writer_write(event_writer, sample), QEO_OK);
    qeocore_data_free(sample);


    sleep(1);
    org_qeo_wifi_ScanListEntry_t *entry;
    DDS_SEQ_FOREACH_ENTRY (chat_msg.list, i, entry){
        ck_assert_str_eq(entry->BSSID, DDS_SEQ_ITEM_PTR(_rcvd_chatmsg.list,i)->BSSID);
        ck_assert_str_eq(entry->SSID, DDS_SEQ_ITEM_PTR(_rcvd_chatmsg.list,i)->SSID);
        ck_assert_int_eq(entry->channel, DDS_SEQ_ITEM_PTR(_rcvd_chatmsg.list,i)->channel);
        ck_assert_int_eq(entry->RSSI, DDS_SEQ_ITEM_PTR(_rcvd_chatmsg.list,i)->RSSI);
    }

    ck_assert_str_eq(_rcvd_chatmsg.from, chat_msg.from);
    ck_assert_str_eq(_rcvd_chatmsg.message, chat_msg.message);
    fail_unless(dds_seq_equal(&_rcvd_chatmsg.extraInfo, &chat_msg.extraInfo), "sequences not equal");
    ck_assert_int_eq(_rcvd_chatmsg.fromExtra.lower, chat_msg.fromExtra.lower);
    ck_assert_int_eq(_rcvd_chatmsg.fromExtra.upper, chat_msg.fromExtra.upper);
    ck_assert_int_eq(_rcvd_chatmsg.maincolor, chat_msg.maincolor);
    fail_unless(dds_seq_equal(&_rcvd_chatmsg.colorlist, &chat_msg.colorlist), "sequences not equal");


    qeocore_writer_close(event_writer);
Ejemplo n.º 6
0
void ctt_event (Reader_t *rp, NotificationType_t t)
{
	Domain_t			*dp = rp->r_subscriber->domain;
	ChangeData_t			change;
	DDS_ParticipantStatelessMessage *info = NULL;
	int				error;
#ifdef DDS_QEO_TYPES
	unsigned                        i;
	DDS_DataHolder                  *cp;
#endif

	if (t != NT_DATA_AVAILABLE)
		return;

	rp->r_status &= ~DDS_DATA_AVAILABLE_STATUS;
	for (;;) {
		error = disc_get_data (rp, &change);
		if (error)
			break;

		/* Unmarshall handshake message. */
		info = change.data;
		if (!info)
			break;

		/* Drop message if not a broadcast or no matching key. */
		if (memcmp (info->destination_participant_key,
				psmp_unknown_key, GUIDPREFIX_SIZE) &&
		    memcmp (info->destination_participant_key,
		    		dp->participant.p_guid_prefix.prefix, GUIDPREFIX_SIZE))
			goto free_data;

		CTT_TRACE ('R', info);

		CTT_ASSERT (dp);

		/* Handle different message classes specifically: */
		if (!info->message_class_id)
			;
		else if (!strcmp (info->message_class_id,
				  GMCLASSID_SECURITY_PARTICIPANT_CRYPTO_TOKENS))
			ctt_participant_crypto_tokens (dp, info);
		else if (!strcmp (info->message_class_id,
				  GMCLASSID_SECURITY_DATAWRITER_CRYPTO_TOKENS))
			ctt_data_writer_crypto_tokens (dp, info);
		else if (!strcmp (info->message_class_id,
				  GMCLASSID_SECURITY_DATAREADER_CRYPTO_TOKENS))
			ctt_data_reader_crypto_tokens (dp, info);
#ifdef DDS_QEO_TYPES
		else if (cb_fct) {
			for (i = 0; i < DDS_SEQ_LENGTH (info->message_data); i++) {
				cp = DDS_SEQ_ITEM_PTR (info->message_data, i);
				(*cb_fct) (cp);
			}
		}
#endif
		CTT_ASSERT (dp);

		/* Free message info. */

	    free_data:
		xfree (info);
		info = NULL;
	}
	if (info)
		xfree (info);
}