DAT_EP_DISCONNECT(3DAT) Direct Access Transport Library Functions
NAME
dat_ep_disconnect - terminate a connection or a connection
establishment
SYNOPSIS
cc [
flag... ]
file...
-ldat [
library... ]
#include <
dat/udat.h>
DAT_RETURN
dat_ep_disconnect (
IN DAT_EP_HANDLE ep_handle,
IN DAT_CLOSE_FLAGS disconnect_flags
)
PARAMETERS
ep_handle Handle for an instance of Endpoint.
disconnect_flags Flags for disconnect. Flag values are as follows:
DAT_CLOSE_ABRUPT_FLAG Abrupt close. This is
the default value.
DAT_CLOSE_GRACEFUL_FLAG Graceful close.
DESCRIPTION
The
dat_ep_disconnect() function requests a termination of a
connection or connection establishment. This operation is used by the
active/client or a passive/server side Consumer of the connection
model.
The
disconnect_flags parameter allows Consumers to specify whether
they want graceful or abrupt disconnect. Upon disconnect, all
outstanding and in-progress DTOs and RMR Binds must be completed.
For abrupt disconnect, all outstanding DTOs and RMR Binds are
completed unsuccessfully, and in-progress DTOs and RMR Binds can be
completed successfully or unsuccessfully. If an in-progress DTO is
completed unsuccessfully, all follow on in-progress DTOs in the same
direction also must be completed unsuccessfully. This order is
presented to the Consumer through a DTO completion Event Stream of
the
recv_evd_handle and
request_evd_handle of the Endpoint.
For graceful disconnect, all outstanding and in-progress request DTOs
and RMR Binds must try to be completed successfully first, before
disconnect proceeds. During that time, the local Endpoint is in a
DAT_EP_DISCONNECT_PENDING state.
The Consumer can call abrupt
dat_ep_disconnect() when the local
Endpoint is in the
DAT_EP_DISCONNECT_PENDING state. This causes the
Endpoint to transition into
DAT_EP_STATE_DISCONNECTED without waiting
for outstanding and in-progress request DTOs and RMR Binds to
successfully complete. The graceful
dat_ep_disconnect() call when the
local Endpoint is in the
DAT_EP_DISCONNECT_PENDING state has no
effect.
If the Endpoint is not in
DAT_EP_STATE_CONNECTED, the semantic of the
operation is the same for graceful or abrupt
disconnect_flags value.
No new Send, RDMA Read, and RDMA Write DTOs, or RMR Binds can be
posted to the Endpoint when the local Endpoint is in the
DAT_EP_DISCONNECT_PENDING state.
The successful completion of the disconnect is reported to the
Consumer through a
DAT_CONNECTION_EVENT_DISCONNECTED event on
connect_evd_handle of the Endpoint. The Endpoint is automatically
transitioned into a
DAT_EP_STATE_DISCONNECTED state upon successful
asynchronous completion. If the same EVD is used for
connect_evd_handle and any
recv_evd_handle and request_evd_handle,
all successful Completion events of in-progress DTOs precede the
Disconnect Completion event.
Disconnecting an unconnected Disconnected Endpoint is no-op.
Disconnecting an Endpoint in
DAT_EP_STATE_UNCONNECTED,
DAT_EP_STATE_RESERVED,
DAT_EP_STATE_PASSIVE_CONNECTION_PENDING, and
DAT_EP_STATE_TENTATIVE_CONNECTION_PENDING is disallowed.
Both abrupt and graceful disconnect of the Endpoint during connection
establishment,
DAT_EP_STATE_ACTIVE_CONNECTION_PENDING and
DAT_EP_STATE_COMPLETION_PENDING, "aborts" the connection
establishment and transitions the local Endpoint into
DAT_EP_STATE_DISCONNECTED. That causes preposted Recv DTOs to be
flushed to
recv_evd_handle.
RETURN VALUES
DAT_SUCCESS The operation was successful.
DAT_INVALID_HANDLE The
ep_handle parameter is invalid.
DAT_INSUFFICIENT_RESOURCES The operation failed due to resource
limitations.
DAT_INVALID_PARAMETER The
disconnect_flags parameter is
invalid.
DAT_INVALID_STATE A parameter is in an invalid state.
Endpoint is not in the valid state for
disconnect.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+---------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+---------------------------+
|Interface Stability | Standard: uDAPL, 1.1, 1.2 |
+--------------------+---------------------------+
|MT-Level | Unsafe |
+--------------------+---------------------------+
SEE ALSO
libdat(3LIB),
attributes(7) April 9, 2016 DAT_EP_DISCONNECT(3DAT)