Legacy Documentclose button

Important: The information in this document is obsolete and should not be used for new development.

Previous Book Contents Book Index Next

Inside Macintosh: Networking With Open Transport / Part 2 - Open Transport Reference
Chapter 22 - Endpoints Reference / Functions
Functions for Connection-Oriented Transactionless Endpoints /


OTSnd

Sends data to a remote peer using a connection-oriented, transactionless endpoint.

C INTERFACE
OTResult OTSnd(EndpointRef ref, 
                                         void* buf, 
                                         size_t nbytes, 
                                     
C++ INTERFACE
OTResult TEndpoint::Snd(void* buf, 
                     size_t nbytes, 
                     OTFlags flags);
PARAMETERS
ref
The endpoint reference of the endpoint sending data.
buf
A pointer to the data being sent.
nbytes
A 32-bit value specifying the number of bytes being sent.
flags
A 32-bit bitmapped value specifying whether the data to be sent is expedited (T_EXPEDITED) and whether more data remains to be sent (T_MORE). To set both fields, use the bitwise OR operator.
function result
A positive number indicating the actual number of bytes sent or a negative number indicating an error code. See Discussion.
DISCUSSION
You use the OTSnd function to send data to a remote peer. Before you use this function, you must establish a connection with the peer.

You specify the data to be sent by passing a pointer to the data (buf) and by specifying the size of the data (nbytes). The maximum size of the data you can send is specified by the tsdu field of the TEndpointInfo structure for the endpoint or by the etsdu field for expedited data (T_EXPEDITED flag set).

Some protocols use expedited data for control or attention messages. To determine whether the endpoint supports this service, examine the etsdu field of the TEndpointInfo structure. A positive integer for the etsdu field indicates the maximum size in bytes of expedited data that you can send. To send expedited data, you set the T_EXPEDITED bit of the flags parameter.

If you want to break up the data into logical units, you can set the T_MORE bit of the flags parameter to indicate that you are using additional calls to the OTSnd function to send more data that belongs to the same logical unit. To indicate that the last data unit is being sent, turn off the T_MORE flag. Only some endpoints support the preservation of logical units; you should check the tsdu field of the TEndpointInfo structure to find out if yours does.

If the endpoint is in synchronous blocking mode, the OTSnd function returns after it actually sends the data. If flow-control restrictions prevent its sending the data, it retries the operation until it is able to send it.

If the endpoint is in non-blocking or asynchronous mode, the OTSnd function returns with the kOTFlowErr result if flow-control restrictions prevent the data from being sent. When the endpoint provider is able to send the data, it sendsa T_GODATA event to let you know that it is possible to send data. You should wait for this event and then send the data again.

If the endpoint is in non-blocking or asynchronous mode, it is also possible that only part of the data is actually accepted by the transport provider. In this case, the OTSnd function returns a value that is less than the value of the nbytes parameter. In this case, you should call the function again to send the remaining data.

If an asynchronous event, such as a disconnect, occurs and interrupts the OTSnd function, OTSnd returns with the kOTLookErr result.

The following table shows how the endpoint's modes of operation affects the behavior of the OTSnd function.

 BlockingNonblocking
SynchronousThe function returns when the provider lifts flow-control restrictions.The function returns immediately.
 The kOTFlowErr result is never returned.The kOTFlowErr result might be returned.
Asynchronous  The function returns immediately.The function returns immediately.
 The kOTFlowErr result might be returned.The kOTFlowErr result might be returned.

SPECIAL CONSIDERATIONS
The XTI_SNDLOWAT option allows endpoints that support it to negotiate the minimum number of bytes that must have accumulated in the endpoint's internal send buffer before data is sent. See "Option Management".

SEE ALSO
Table 4-4.


Previous Book Contents Book Index Next

© Apple Computer, Inc.
15 JAN 1998