OSF DCE Application Development Guide--Core Components
Interface Definition Language
17.11.1 Operation Attributes
Operation attributes determine the semantics to be applied by the RPC client and server
protocol when an operation is called.
17.11.2 Operation Attributes: Execution Semantics
The idempotent attribute specifies that an operation is idempotent; that is, it can safely
be executed more than once.
The broadcast attribute specifies that an operation is to be broadcast to all hosts on the
local network each time the operation is called. The client receives output arguments
from the first reply to return successfully, and all subsequent replies are discarded.
An operation with the broadcast attribute is implicitly idempotent.
Note that the broadcast capabilities of RPC runtime have a number of distinct
limitations:
• Not all systems and networks support broadcasting. In particular, broadcasting is not
supported by the RPC connection-oriented protocol.
• Broadcasts are limited to hosts on the local network.
• Broadcasts make inefficient use of network bandwidth and processor cycles.
• The RPC runtime library does not support at-most-once semantics for broadcast
operations; it applies idempotent semantics to all such operations.
• The input arguments for broadcast calls are limited to 944 bytes.
The maybe attribute specifies that the caller of an operation does not expect any
response. An operation with the maybe attribute cannot have any output parameters and
cannot return anything. Delivery of the call is not guaranteed.
An operation with the maybe attribute is implicitly idempotent.
17.11.3 Operation Attributes: Memory Management
Use the reflect_deletions attribute to mirror the release of memory from server pointer
targets to client pointer targets. When you use the reflect_deletions attribute, memory
occupied by pointer targets on the client will be released when the corresponding pointer
targets on the server are released. This is only true for pointer targets that are
components of [in] parameters of the operation. By default, the mechanism used by RPC
to release the pointer targets is the C language free( ) function unless the client code is
executing as part of RPC server application code, in which case the rpc_ss_free()
function is used. You can override the default by calling rpc_ss_set_client_alloc_free()
or rpc_ss_swap_client_alloc_free( ) before the call to the remote operation.
124245 Tandem Computers Incorporated 17− 19