Skip to content

Commit

Permalink
Add zap_zerr2errno service and API to check zap_ep state
Browse files Browse the repository at this point in the history
  • Loading branch information
tom95858 committed Jul 20, 2020
1 parent 8eba96b commit 10c145d
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 11 deletions.
61 changes: 61 additions & 0 deletions lib/src/zap/zap.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,62 @@ static char *__zap_event_str[] = {
"ZAP_EVENT_LAST"
};

int zap_zerr2errno(enum zap_err_e e)
{
switch (e) {
case ZAP_ERR_OK:
return 0;
case ZAP_ERR_PARAMETER:
return EINVAL;
case ZAP_ERR_TRANSPORT:
return EIO;
case ZAP_ERR_ENDPOINT:
return ENOTCONN;
case ZAP_ERR_ADDRESS:
return EADDRNOTAVAIL;
case ZAP_ERR_ROUTE:
return ENETUNREACH;
case ZAP_ERR_MAPPING:
return EFAULT;
case ZAP_ERR_RESOURCE:
return ENOBUFS;
case ZAP_ERR_BUSY:
return EBUSY;
case ZAP_ERR_NO_SPACE:
return ENOSPC;
case ZAP_ERR_INVALID_MAP_TYPE:
return EPROTOTYPE;
case ZAP_ERR_CONNECT:
return ECONNREFUSED;
case ZAP_ERR_NOT_CONNECTED:
return ENOTCONN;
case ZAP_ERR_HOST_UNREACHABLE:
return EHOSTUNREACH;
case ZAP_ERR_LOCAL_LEN:
return E2BIG;
case ZAP_ERR_LOCAL_OPERATION:
return EOPNOTSUPP;
case ZAP_ERR_LOCAL_PERMISSION:
return EPERM;
case ZAP_ERR_REMOTE_MAP:
return EFAULT;
case ZAP_ERR_REMOTE_LEN:
return EFAULT;
case ZAP_ERR_REMOTE_PERMISSION:
return EPERM;
case ZAP_ERR_REMOTE_OPERATION:
return EOPNOTSUPP;
case ZAP_ERR_RETRY_EXCEEDED:
return ETIMEDOUT;
case ZAP_ERR_TIMEOUT:
return ETIMEDOUT;
case ZAP_ERR_FLUSH:
return EPIPE;
default:
assert(NULL == "Invalid Zapp error value");
}
}

enum zap_err_e zap_errno2zerr(int e)
{
switch (e) {
Expand Down Expand Up @@ -515,6 +571,11 @@ int zap_ep_connected(zap_ep_t ep)
return (ep->state == ZAP_EP_CONNECTED);
}

zap_ep_state_t zap_ep_state(zap_ep_t ep)
{
return ep->state;
}

void zap_put_ep(zap_ep_t ep)
{
assert(ep->ref_count);
Expand Down
32 changes: 32 additions & 0 deletions lib/src/zap/zap.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,13 @@ const char* zap_err_str(enum zap_err_e e)
*/
enum zap_err_e zap_errno2zerr(int e);

/**
* \brief Convert a given ::zap_err_e to a Unix errno
* \param zerr The Zap error
* \returns The equivalent Unix errno
*/
int zap_zerr2errno(zap_err_t zerr);

typedef struct zap_event {
/*! Event type */
zap_event_type_t type;
Expand Down Expand Up @@ -375,6 +382,31 @@ int zap_ep_closed(zap_ep_t ep);
*/
int zap_ep_connected(zap_ep_t ep);

typedef enum zap_ep_state {
ZAP_EP_INIT = 0,
ZAP_EP_LISTENING,
ZAP_EP_ACCEPTING,
ZAP_EP_CONNECTING,
ZAP_EP_CONNECTED,
ZAP_EP_PEER_CLOSE,
ZAP_EP_CLOSE,
ZAP_EP_ERROR
} zap_ep_state_t;

/**
* \brief Return the Zap endpoint state
* \param ep The Zap endpoint handle
*/
zap_ep_state_t zap_ep_state(zap_ep_t ep);

/** \brief Check if a Zap endpoint is listening
*
* \param ep The endpoint handle
* \return 1 The endpoint is connected
* \return 0 The endpoint is not connected
*/
int zap_ep_listening(zap_ep_t ep);

/** \brief Request a connection with a remote peer.
*
* \param ep The transport handle.
Expand Down
11 changes: 0 additions & 11 deletions lib/src/zap/zap_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,17 +142,6 @@ int zap_version_check(struct zap_version *v)
return ZAP_VERSION_EQUAL(*v);
}

typedef enum zap_ep_state {
ZAP_EP_INIT = 0,
ZAP_EP_LISTENING,
ZAP_EP_ACCEPTING,
ZAP_EP_CONNECTING,
ZAP_EP_CONNECTED,
ZAP_EP_PEER_CLOSE,
ZAP_EP_CLOSE,
ZAP_EP_ERROR
} zap_ep_state_t;

const char *zap_ep_state_str[] = {
[ZAP_EP_INIT] = "ZAP_EP_INIT",
[ZAP_EP_LISTENING] = "ZAP_EP_LISTENING",
Expand Down

0 comments on commit 10c145d

Please sign in to comment.