diff options
author | cbdev <cb@cbcdn.com> | 2020-03-23 00:15:00 +0100 |
---|---|---|
committer | cbdev <cb@cbcdn.com> | 2020-03-23 00:15:00 +0100 |
commit | 37e712edf23a49be5387f945ab9ea57cc0b57f22 (patch) | |
tree | 5037b14bdbd08baa8f104f7e4946aa5643281a94 /backends/maweb.c | |
parent | 666aec036f9bf0de82c435bd7eace271613cee1e (diff) | |
parent | aa02ccf3abf183207b24fcbb9460cbd904a698e2 (diff) | |
download | midimonster-37e712edf23a49be5387f945ab9ea57cc0b57f22.tar.gz midimonster-37e712edf23a49be5387f945ab9ea57cc0b57f22.tar.bz2 midimonster-37e712edf23a49be5387f945ab9ea57cc0b57f22.zip |
Merge current master
Diffstat (limited to 'backends/maweb.c')
-rw-r--r-- | backends/maweb.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/backends/maweb.c b/backends/maweb.c index 39a6cb2..6861d75 100644 --- a/backends/maweb.c +++ b/backends/maweb.c @@ -15,10 +15,15 @@ #define WS_FLAG_FIN 0x80 #define WS_FLAG_MASK 0x80 +/* + * TODO handle peer close/unregister/reopen and fallback connections + */ + static uint64_t last_keepalive = 0; static uint64_t update_interval = 50; static uint64_t last_update = 0; static uint64_t updates_inflight = 0; +static uint64_t quiet_mode = 0; static maweb_command_key cmdline_keys[] = { {"PREV", 109, 0, 1}, {"SET", 108, 1, 0, 1}, {"NEXT", 110, 0, 1}, @@ -139,6 +144,10 @@ static int maweb_configure(char* option, char* value){ update_interval = strtoul(value, NULL, 10); return 0; } + else if(!strcmp(option, "quiet")){ + quiet_mode = strtoul(value, NULL, 10); + return 0; + } LOGPF("Unknown backend configuration option %s", option); return 1; @@ -205,16 +214,11 @@ static int maweb_configure_instance(instance* inst, char* option, char* value){ return 1; } -static instance* maweb_instance(){ - instance* inst = mm_instance(); - if(!inst){ - return NULL; - } - +static int maweb_instance(instance* inst){ maweb_instance_data* data = calloc(1, sizeof(maweb_instance_data)); if(!data){ LOG("Failed to allocate memory"); - return NULL; + return 1; } data->fd = -1; @@ -222,12 +226,12 @@ static instance* maweb_instance(){ if(!data->buffer){ LOG("Failed to allocate memory"); free(data); - return NULL; + return 1; } data->allocated = MAWEB_RECV_CHUNK; inst->impl = data; - return inst; + return 0; } static channel* maweb_channel(instance* inst, char* spec, uint8_t flags){ @@ -462,7 +466,9 @@ static int maweb_request_playbacks(instance* inst){ size_t page_index = 0, view = 3, channel = 0, offsets[3], channel_offset, channels; if(updates_inflight){ - LOGPF("Skipping update request, %" PRIu64 " updates still inflight", updates_inflight); + if(quiet_mode < 1){ + LOGPF("Skipping update request, %" PRIu64 " updates still inflight - consider raising the interval time", updates_inflight); + } return 0; } @@ -593,7 +599,9 @@ static int maweb_handle_message(instance* inst, char* payload, size_t payload_le data->login = 0; return 0; } - LOGPF("Session id is now %" PRId64, data->session); + if(quiet_mode < 2){ + LOGPF("Session id is now %" PRId64, data->session); + } } if(json_obj_bool(payload, "forceLogin", 0)){ @@ -752,7 +760,7 @@ static ssize_t maweb_handle_ws(instance* inst, ssize_t bytes_read){ static int maweb_handle_fd(instance* inst){ maweb_instance_data* data = (maweb_instance_data*) inst->impl; - ssize_t bytes_read, bytes_left = data->allocated - data->offset, bytes_handled; + ssize_t bytes_read, bytes_left = data->allocated - data->offset, bytes_handled = 0; if(bytes_left < 3){ data->buffer = realloc(data->buffer, (data->allocated + MAWEB_RECV_CHUNK) * sizeof(uint8_t)); |