net: factor out SS_CONNECTED state checking and add SS_CONNECTING

This commit is contained in:
Thomas Schoebel-Theuer 2022-08-16 06:38:11 +02:00 committed by Thomas Schoebel-Theuer
parent fdb0b598b0
commit 701963fe28
2 changed files with 24 additions and 1 deletions

View File

@ -431,7 +431,8 @@ bool mars_socket_is_alive(struct mars_socket *msock)
ok = mars_get_socket(msock);
if (likely(ok)) {
struct socket *sock = msock->s_socket;
if (sock->state == SS_CONNECTED) {
if (!_socket_not_connected(sock)) {
msock->s_connected = true;
} else if (msock->s_connected) {
MARS_DBG("#%d remote side hangup %p sock = %p\n", msock->s_debug_nr, msock, msock->s_socket);

View File

@ -163,6 +163,28 @@ extern long mars_socket_send_space_available(struct mars_socket *msock);
extern int mars_send_raw(struct mars_socket *msock, const void *buf, int len, bool cork);
extern int mars_recv_raw(struct mars_socket *msock, void *buf, int minlen, int maxlen);
extern inline bool _socket_is_connecting(struct socket *sock)
{
return (sock->state == SS_CONNECTING);
}
extern inline bool _socket_not_connected(struct socket *sock)
{
return (sock->state != SS_CONNECTED);
}
extern inline bool mars_socket_is_connecting(struct mars_socket *msock)
{
return msock->s_socket &&
_socket_is_connecting(msock->s_socket);
}
extern inline bool mars_socket_not_connected(struct mars_socket *msock)
{
return !msock->s_socket ||
_socket_not_connected(msock->s_socket);
}
/* Mid-level generic field data exchange
*/
extern int mars_send_struct(struct mars_socket *msock, const void *data, const struct meta *meta, bool cork);