typedef axl_bool(* VortexXmlRpcValidateResource)(VortexConnection *connection, int channel_number, const char *serverName, const char *resource_path, axlPointer user_data)

This async handler allows to control how is accepted XML-RPC initial boot channel based on a particular resource.

XML-RPC specificaiton states that the method invocation is considered as a two-phase invocation.

The first phase, the channel boot, is defined as a channel creation, where the XML-RPC profile is prepared and, under the same step, it is asked for a particular resource value to be supported by the server (or the listener which is actually the entity receiving the invocation).

The second step is actually the XML-RPC invocation.

This resource value, by default, is "/". This allows to group services under resources like: "/sales", "/sales/dep-a", etc. This also allows to ask to listerners if they support a particular interface. Think about grouping services, which represents a concrete interface, under the same resource. Then, listener that supports the resource are reporting that they, indeed, support a particular interface.

However, resource validation is not required at all. You can live without it safely.

As a note, you can pass a NULL handler reference to the vortex_xml_rpc_accept_negotiation, making the Vortex XML-RPC engine to accept all resources (resource validation always evaluated to axl_true).

This function is used by:

Here is an example of a resource validation handler that accept all resources:

 axl_bool   validate_all_resources (VortexConnection * connection,
                                    int                channel_number,
                                    char             * serverName,
                                    char             * resource_path,
                                    axlPointer         user_data)
     // This is a kind of useless validation handler because 
     // it is doing the same like passing a NULL reference.
     // In this handler could be programmed any policy to validate a resource,
     // maybe based on the connection source,  the number of channels that the 
     // connection have, etc.
     return axl_true;

connection The connection where the resource bootstrapping request was received.
channel_number The channel number to create requested.
serverName An optional serverName value to act as.
resource_path The resource path requested.
user_data User space data.
axl_true to accept resource requested. axl_false if not.