void dbDeviceCallbackFunction( mapper_db_device record, mapper_db_action_t action, void* user ) { /* printf( "\nForm::db_device_callback_function( ... )\n" ); printf( "record->name %s action %d user %p \n\n", record->name, action, user ); */ if ( action == MDB_NEW ) { /*form->addNewDevice( record->name, record->host, record->port, false ); */ form->addNewDevice( record ); mapper_monitor_request_signals_by_name( qtmapper, record->name ); mapper_monitor_request_links_by_name( qtmapper, record->name ); mapper_monitor_request_mappings_by_name( qtmapper, record->name ); } else if ( action == MDB_REMOVE ) { //form->removeDevice( record->name ); form->removeDevice( record ); } }
int mapper_monitor_batch_request_signals_by_name(mapper_monitor mon, const char* name, int batch_size) { // find the db record of device mapper_db_device dev = mapper_db_get_device_by_name(&mon->db, name); if (!dev) { return 1; } int signal_count = 0; lo_type type; const lo_arg *value; if (!mapper_db_device_property_lookup(dev, "n_inputs", &type, &value)) { if (type == LO_INT32) signal_count = value->i32; } if (!mapper_db_device_property_lookup(dev, "n_outputs", &type, &value)) if (type == LO_INT32) signal_count = signal_count > value->i32 ? signal_count : value->i32; if (!signal_count) return 1; if (signal_count <= batch_size) { mapper_monitor_request_signals_by_name(mon, name); return 1; } mapper_db_batch_request data = (mapper_db_batch_request) malloc(sizeof(struct _mapper_db_batch_request)); data->monitor = mon; data->device = dev; data->index = 0; data->total_count = signal_count; data->batch_size = batch_size; mapper_db_add_signal_callback(&mon->db, on_signal_continue_batch_request, data); mapper_monitor_request_signals_by_name_and_index(mon, name, 0, batch_size); return 0; }