diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-01-28 13:13:36 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-01-28 13:18:36 +0100 |
commit | 7f8e0502e2b5692441fb8c281ef5556172591883 (patch) | |
tree | 1dc70e9e13ef3e4e57a6f2dacf0fb4da7681c61f | |
parent | 6326e8ff85a176edd5235f6e2e718e7577cfacd6 (diff) |
stream: Add new WAIT_RECONNECT cli state
It's not really needed right now from logic point of view, since we
reused NONE for that. But it makes logging and logic clearer, and will
make it easier if we decide to move it to FSMs at a later point in time.
Other state value_string names are also modified with its whitespace
removed since anyway we'd need to change them to match WAIT_RECONNECT
length. Let's drop the space because imho it's not that useful and
anyway if we move to FSMs at some point then we won't have them anyway.
Change-Id: I7b9a6da87081c418b0d14bab5f34369c5eca6fe8
-rw-r--r-- | src/stream.c | 16 | ||||
-rw-r--r-- | tests/stream/stream_test.err | 8 |
2 files changed, 14 insertions, 10 deletions
diff --git a/src/stream.c b/src/stream.c index c47ae3e..8a063f2 100644 --- a/src/stream.c +++ b/src/stream.c @@ -129,16 +129,18 @@ static int setsockopt_nodelay(int fd, int proto, int on) */ enum osmo_stream_cli_state { - STREAM_CLI_STATE_NONE = 0, /* No fd associated, may have timer active to try to connect again */ - STREAM_CLI_STATE_CONNECTING = 1, /* Fd associated, but connection not yet confirmed by peer or lower layers */ - STREAM_CLI_STATE_CONNECTED = 2, /* Fd associated and connection is established */ + STREAM_CLI_STATE_NONE, /* No fd associated, no timer active */ + STREAM_CLI_STATE_WAIT_RECONNECT, /* No fd associated, has timer active to try to connect again */ + STREAM_CLI_STATE_CONNECTING, /* Fd associated, but connection not yet confirmed by peer or lower layers */ + STREAM_CLI_STATE_CONNECTED, /* Fd associated and connection is established */ STREAM_CLI_STATE_MAX }; static const struct value_string stream_cli_state_names[] = { - { STREAM_CLI_STATE_NONE, " NONE" }, - { STREAM_CLI_STATE_CONNECTING, "CONNECTING" }, - { STREAM_CLI_STATE_CONNECTED, " CONNECTED" }, + { STREAM_CLI_STATE_NONE, "NONE" }, + { STREAM_CLI_STATE_WAIT_RECONNECT, "WAIT_RECONNECT" }, + { STREAM_CLI_STATE_CONNECTING, "CONNECTING" }, + { STREAM_CLI_STATE_CONNECTED, "CONNECTED" }, { 0, NULL } }; @@ -187,6 +189,7 @@ void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli) return; } + cli->state = STREAM_CLI_STATE_WAIT_RECONNECT; LOGSCLI(cli, LOGL_INFO, "retrying in %d seconds...\n", cli->reconnect_timeout); osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0); @@ -669,6 +672,7 @@ int osmo_stream_cli_open(struct osmo_stream_cli *cli) return 0; error_close_socket: + cli->state = STREAM_CLI_STATE_NONE; close(cli->ofd.fd); cli->ofd.fd = -1; return -EIO; diff --git a/tests/stream/stream_test.err b/tests/stream/stream_test.err index 04bfcfe..69a0b85 100644 --- a/tests/stream/stream_test.err +++ b/tests/stream/stream_test.err @@ -12,8 +12,8 @@ {2.000006} autoreconnecting test step 6 [client OK, server OK], FD reg 1 {2.000007} autoreconnecting test step 5 [client OK, server OK], FD reg 1 -[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv -[ NONE] osmo_stream_cli_reconnect(): retrying in 9 seconds... +[CONNECTED] osmo_stream_cli_recv(): connection closed with srv +[WAIT_RECONNECT] osmo_stream_cli_reconnect(): retrying in 9 seconds... {11.000008} autoreconnecting test step 4 [client OK, server OK], FD reg 0 @@ -37,7 +37,7 @@ connection closed with srv {11.000017} non-reconnecting test step 2 [client OK, server OK], FD reg 1 {11.000018} non-reconnecting test step 1 [client OK, server OK], FD reg 1 -[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv -[ NONE] osmo_stream_cli_reconnect(): not reconnecting, disabled. +[CONNECTED] osmo_stream_cli_recv(): connection closed with srv +[NONE] osmo_stream_cli_reconnect(): not reconnecting, disabled. {20.000019} non-reconnecting test step 0 [client OK, server OK], FD reg 0 |