The NDKPI documentation uses the following terms to describe NDK providers and consumers.
- provider function
- consumer callback
- completion callback
- event callback
- parent object
- child object
- antecedent object
- successor object
- Related topics
An NDKPI function in the function dispatch table of an NDK object. Provider functions are implemented by NDK providers and called by NDK consumers. All provider functions have as the first parameter a pointer to the object on which they operate. This pointer is similar to the "this" pointer in C++. This pointer is always passed explicitly by the consumer to the provider function.
An NDKPI function implemented by NDK consumers and called by NDK providers. There are 2 types of consumer callbacks: completion callbacks and event callbacks.
A consumer callback that is called by the NDK provider to signal the completion of an asynchronous provider function. In NDKPI 1.1 and 1.2, there are 3 completion callbacks:
- NdkCloseCompletion (NDK_FN_CLOSE_COMPLETION)
- NdkCreateCompletion (NDK_FN_CREATE_COMPLETION)
- NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION)
A consumer callback that can be called by the NDK provider to indicate certain events on an NDK object asynchronously without being triggered by an asynchronous provider function. In NDKPI 1.1 and 1.2, there are 4 event callbacks:
- NdkCqNotificationCallback (NDK_FN_CQ_NOTIFICATION_CALLBACK)
- NdkConnectEventCallback (NDK_FN_CONNECT_EVENT_CALLBACK)
- NdkDisconnectEventCallback (NDK_FN_DISCONNECT_EVENT_CALLBACK)
- NdkSrqNotificationCallback (NDK_FN_SRQ_NOTIFICATION_CALLBACK)
An NDK object whose function dispatch table contains one or more NdkCreateXxx provider functions to create other objects. in NDKPI versions 1.1 and 1.2, there are 2 parent objects:
The NDK adapter object (NDK_ADAPTER) is the parent of:
The NDK protection domain (PD) object (NDK_PD) is the parent of:
An NDK object which is created by calling one of the NdkCreateXxx provider functions in a parent object's dispatch table.
An NDK object that another object relies on in order to provide functionality. The antecedent object must be created before the successor object. Note that all parent objects are antecedent objects, but the reverse is not true.
An NDK object that relies on an antecedent object. The antecedent object must be created before the successor object. Note that all child objects are successor objects but the reverse is not true. Note that an antecedent/successor relationship may be required, optional, and/or deferred to a point after the successor creation in some cases.
The following antecedent/successor relationships are defined by NDKPI versions 1.1 and 1.2 (in addition to the parent/child relationships, which are antecedent/successor relationships by definition):
An implicit or explicit representation of a local address and NetworkDirect port number that identify the local point over which connections can be initiated or accepted, for example, 10.1.1.1:445:
- An NDK_LISTENER has an implicit endpoint (which the consumer specifies when calling NdkListen (NDK_FN_LISTEN)).
- An NDK_CONNECTOR that is connected by calling NdkConnect (NDK_FN_CONNECT) also has an implicit endpoint.
- An NDK_SHARED_ENDPOINT represents an explicit endpoint. The NDK consumer directly creates the endpoint and uses it explicitly to initiate one or more connections by calling NdkConnectWithSharedEndpoint (NDK_FN_CONNECT_WITH_SHARED_ENDPOINT).