Make TRANSPORT_FEED_ error code -> string conversion centralized.

This commit is contained in:
Andreas Öman 2009-06-03 20:11:06 +00:00
parent 4de0ef733d
commit 315b389e2c
8 changed files with 54 additions and 84 deletions

View file

@ -31,6 +31,7 @@
#include "streaming.h"
#include "dvr.h"
#include "spawn.h"
#include "transports.h"
typedef struct dvr_rec_stream {
LIST_ENTRY(dvr_rec_stream) drs_link;
@ -431,6 +432,9 @@ dvr_thread(void *aux)
break;
case SMT_TRANSPORT_STATUS:
if(sm->sm_code != TRANSPORT_FEED_VALID_PACKETS)
dvr_rec_fatal_error(de, "Source problems: %s",
transport_feed_status_to_text(sm->sm_code));
break;
case SMT_NOSOURCE:

View file

@ -37,6 +37,7 @@
#include "access.h"
#include "htsp.h"
#include "streaming.h"
#include "transports.h"
#include "htsmsg_binary.h"
@ -1159,35 +1160,9 @@ htsp_subscription_transport_status(htsp_subscription_t *hs,
{
const char *err = NULL;
switch(status) {
case TRANSPORT_FEED_UNKNOWN:
return;
if(status != TRANSPORT_FEED_VALID_PACKETS)
err = transport_feed_status_to_text(status);
case TRANSPORT_FEED_NO_INPUT:
err = "No data input from adapter detected";
break;
case TRANSPORT_FEED_NO_DEMUXED_INPUT:
err = "No mux packets for this service";
break;
case TRANSPORT_FEED_RAW_INPUT:
err = "Data received for service, "
"but no packets could be reassembled";
break;
case TRANSPORT_FEED_NO_DESCRAMBLER:
err = "No descrambler available for service";
break;
case TRANSPORT_FEED_NO_ACCESS:
err = "Access denied";
break;
case TRANSPORT_FEED_VALID_PACKETS:
err = NULL;
break;
}
htsp_subscription_status(hs, err);
}

View file

@ -114,40 +114,12 @@ serviceprobe_thread(void *aux)
if(sm->sm_type == SMT_TRANSPORT_STATUS) {
status = sm->sm_code;
switch(status) {
case TRANSPORT_FEED_UNKNOWN:
break;
run = 0;
case TRANSPORT_FEED_NO_INPUT:
err = "No data input from adapter detected";
run = 0;
break;
case TRANSPORT_FEED_NO_DEMUXED_INPUT:
err = "No mux packets for this service";
run = 0;
break;
case TRANSPORT_FEED_RAW_INPUT:
err = "Data received for service, "
"but no packets could be reassembled";
run = 0;
break;
case TRANSPORT_FEED_NO_DESCRAMBLER:
err = "No descrambler available for service";
run = 0;
break;
case TRANSPORT_FEED_NO_ACCESS:
err = "Access denied";
run = 0;
break;
case TRANSPORT_FEED_VALID_PACKETS:
if(status == TRANSPORT_FEED_VALID_PACKETS) {
err = NULL;
run = 0;
break;
} else {
err = transport_feed_status_to_text(status);
}
}

View file

@ -72,8 +72,10 @@ subscription_link_transport(th_subscription_t *s, th_transport_t *t)
streaming_target_deliver(s->ths_output, sm);
// Send a TRANSPORT_STATUS message to the subscription client
sm = streaming_msg_create_code(SMT_TRANSPORT_STATUS, t->tht_feed_status);
streaming_target_deliver(s->ths_output, sm);
if(t->tht_feed_status != TRANSPORT_FEED_UNKNOWN) {
sm = streaming_msg_create_code(SMT_TRANSPORT_STATUS, t->tht_feed_status);
streaming_target_deliver(s->ths_output, sm);
}
pthread_mutex_unlock(&t->tht_stream_mutex);
}

View file

@ -666,25 +666,6 @@ transport_set_feed_status(th_transport_t *t, transport_feed_status_t newstatus)
newstatus));
}
/**
* Table for status -> text conversion
*/
static struct strtab transportstatustab[] = {
{ "Ok", TRANSPORT_FEED_VALID_PACKETS },
{ "No input", TRANSPORT_FEED_NO_INPUT },
{ "No descrambler", TRANSPORT_FEED_NO_DESCRAMBLER },
{ "No access", TRANSPORT_FEED_NO_ACCESS },
};
const char *
transport_status_to_text(int status)
{
return val2str(status, transportstatustab) ?: "Unknown";
}
/**
* Generate a message containing info about all components
*
@ -720,3 +701,39 @@ transport_build_stream_start_msg(th_transport_t *t)
}
/**
* Table for status -> text conversion
*/
static struct strtab transportstatustab[] = {
{ "Unknown",
TRANSPORT_FEED_UNKNOWN },
{ "No data input from adapter detected",
TRANSPORT_FEED_NO_INPUT},
{"No mux packets for this service",
TRANSPORT_FEED_NO_DEMUXED_INPUT},
{"Data received for service, but no packets could be reassembled",
TRANSPORT_FEED_RAW_INPUT},
{"No descrambler available for service",
TRANSPORT_FEED_NO_DESCRAMBLER},
{"Access denied",
TRANSPORT_FEED_NO_ACCESS},
{"OK",
TRANSPORT_FEED_VALID_PACKETS},
};
const char *
transport_feed_status_to_text(transport_feed_status_t status)
{
return val2str(status, transportstatustab) ?: "Unknown";
}

View file

@ -60,7 +60,7 @@ void transport_destroy(th_transport_t *t);
void transport_set_feed_status(th_transport_t *t,
transport_feed_status_t newstatus);
const char *transport_status_to_text(int status);
const char *transport_feed_status_to_text(transport_feed_status_t status);
void transport_remove_subscriber(th_transport_t *t, th_subscription_t *s);

View file

@ -322,7 +322,7 @@ typedef enum {
/** No status known */
TRANSPORT_FEED_UNKNOWN,
/** No input is received from source at all */
/** No packets are received from source at all */
TRANSPORT_FEED_NO_INPUT,
/** No input is received from source destined for this transport */

View file

@ -580,7 +580,7 @@ build_transport_msg(th_transport_t *t)
htsmsg_add_str(r, "network", t->tht_networkname(t));
htsmsg_add_str(r, "source", t->tht_sourcename(t));
htsmsg_add_str(r, "status", transport_status_to_text(t->tht_feed_status));
htsmsg_add_str(r, "status", "");
video[0] = 0;
audio[0] = 0;