void debug_ctx_journal_dump( uint8_t ctx_id ) { net_ctx_t *ctx = NULL; if( ctx_id > _max_ctx - 1 ) return; ctx = net_ctx_find_by_id( ctx_id ); if( ! ctx) return; logging_printf( LOGGING_DEBUG, "Journal has data: %s\n", ( journal_has_data( ctx->journal ) ? "YES" : "NO" ) ); if( ! journal_has_data( ctx->journal ) ) return; journal_dump( ctx->journal ); }
void journal_pack( journal_t *journal, char **packed, size_t *size ) { char *packed_journal_header = NULL; size_t packed_journal_header_size = 0; char *packed_channel = NULL; size_t packed_channel_size = 0; char *packed_channel_buffer = NULL; size_t packed_channel_buffer_size = 0; char *p = NULL; int i = 0; *packed = NULL; *size = 0; if( ! journal ) return; logging_printf( LOGGING_DEBUG, "journal_pack: journal_has_data = %s header->totchan=%u\n", ( journal_has_data( journal ) ? "YES" : "NO" ) , journal->header->totchan); if( ! journal_has_data( journal ) ) return; journal_header_pack( journal->header, &packed_journal_header, &packed_journal_header_size ); for( i = 0 ; i < MAX_MIDI_CHANNELS ; i++ ) { if( ! journal->channels[i] ) continue; channel_pack( journal->channels[i], &packed_channel, &packed_channel_size ); packed_channel_buffer = ( char * )realloc( packed_channel_buffer, packed_channel_buffer_size + packed_channel_size ); if( ! packed_channel_buffer ) goto journal_pack_cleanup; p = packed_channel_buffer + packed_channel_buffer_size; memset( p, 0, packed_channel_size ); packed_channel_buffer_size += packed_channel_size; memcpy( p, packed_channel, packed_channel_size ); FREENULL( "packed_channel", (void **)&packed_channel ); } // Join it all together *packed = ( char * )malloc( packed_journal_header_size + packed_channel_buffer_size ); p = *packed; memcpy( p, packed_journal_header, packed_journal_header_size ); *size += packed_journal_header_size; p += packed_journal_header_size; memcpy( p, packed_channel_buffer, packed_channel_buffer_size ); *size += packed_channel_buffer_size; journal_pack_cleanup: FREENULL( "packed_channel", (void **)&packed_channel ); FREENULL( "packed_channel_buffer", (void **)&packed_channel_buffer ); FREENULL( "packed_journal_header", (void **)&packed_journal_header ); }