Previous section.

CDE 1.1: Remote Procedure Call
Copyright © 1997 The Open Group

Endpoint Mapper Interface Definition

This appendix gives the IDL specification of the RPC interface to the endpoint mapper service. It makes use of declarations given in IDL Data Type Declarations .

Following are brief descriptions of the operations:

ept_insert()
Add the specified entries to an endpoint map.

ept_delete
Delete the specified entries from an endpoint map.

ept_lookup()
Lookup entries in an endpoint map.

ept_map()
Apply some algorithm (using the fields in the map_tower) to an endpoint map to produce a list of protocol towers.

ept_lookup_handle_free()
Free an ept_lookup or ept_map context_handle.

ept_inq_object()
Inquire Endpoint Map's object id.

ept_mgmt_delete()
Delete matching entries from an endpoint map. All entries that match the tower's interface uuid, version, and network address are deleted. If an object uuid is specified, the entries that are deleted must also match the object uuid.

The endpoint mapper listens on a well-known endpoint for each supported protocol. Registered endpoints are listed in Endpoint Mapper Well-known Ports . An implementation may specify supported endpoints by adding the appropriate endpoint attribute specification to the following declaration.

[uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa), version(3.0), 
 pointer_default(ptr)]
interface ept
{
    const long ept_max_annotation_size  = 64;
    
    typedef struct 
    {
                    uuid_t      object;
                    twr_p_t     tower;
        [string]    char        annotation[ept_max_annotation_size];
    } ept_entry_t, *ept_entry_p_t;
    
    typedef [context_handle] void *ept_lookup_handle_t;
    
    /*
     * E P T _ I N S E R T
     */
    
    void ept_insert(
        [in]            handle_t            h,
        [in]            unsigned32          num_ents,
        [in, size_is(num_ents)]
                        ept_entry_t         entries[],
        [in]            boolean32           replace,
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ D E L E T E
     */
    
    void ept_delete(
        [in]            handle_t            h,
        [in]            unsigned32          num_ents,
        [in, size_is(num_ents)]
                        ept_entry_t         entries[],
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ L O O K U P
     */
    
    [idempotent]
    void ept_lookup(
        [in]            handle_t            h,
        [in]            unsigned32          inquiry_type,
        [in]            uuid_p_t            object,
        [in]            rpc_if_id_p_t       interface_id,
        [in]            unsigned32          vers_option,
        [in, out]       ept_lookup_handle_t *entry_handle,
        [in]            unsigned32          max_ents,
        [out]           unsigned32          *num_ents,
        [out, length_is(*num_ents), size_is(max_ents)]  
                        ept_entry_t         entries[],    
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ M A P
     */
    
    [idempotent]
    void ept_map(
        [in]            handle_t            h,
        [in]            uuid_p_t            object,
        [in]            twr_p_t             map_tower,
        [in, out]       ept_lookup_handle_t *entry_handle,
        [in]            unsigned32          max_towers,
        [out]           unsigned32          *num_towers,
        [out, length_is(*num_towers), size_is(max_towers)]  
                        twr_p_t             towers[],
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ L O O K U P _ H A N D L E _ F R E E
     */
    
    void ept_lookup_handle_free(
        [in]            handle_t            h,
        [in, out]       ept_lookup_handle_t *entry_handle,
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ I N Q _ O B J E C T
     */
    
    [idempotent]
    void ept_inq_object(
        [in]            handle_t            h,
        [out]           uuid_t              *ept_object,
        [out]           error_status_t      *status
    );
    
    /*
     * E P T _ M G M T _ D E L E T E
     */
    
    void ept_mgmt_delete(
        [in]            handle_t            h,
        [in]            boolean32           object_speced,
        [in]            uuid_p_t            object,
        [in]            twr_p_t             tower,
        [out]           error_status_t      *status
    );
}


Please note that the html version of this specification may contain formatting aberrations. The definitive version is available as an electronic publication on CD-ROM from The Open Group.

Contents Next section Index