This function works the same way as vortex_channel_pool_new but, it allows to provide the creation function to be used to initiate channels inside the pool.

Some BEEP profiles are simple and have no especial initial handshake to create the channel properly. In that case you can use safely vortex_channel_pool_new. However, other BEEP profiles includes an initial negotiation that requires more steps to be taken in addition to vortex_channel_new.

This is the case of the XML-RPC profile which once the channel is created, it requires to change the channel into a boot state by exchanging boot resource message and receiving a boot reply.

Because the channel pool has a generic channel creation code, it doesn't have the enough knowledge to create the channel properly, so it delegates that task to the create_channel handler. This handler must return a properly created and ready to use channel so the channel pool can manage it.

Parameters:

connection

The session were channels will be created.

profile

The profile the channels will use.

init_num

The number of channels this pool will create at the startup.

close

Handler to manage channel closing.

create_channel

Handler to the channel creation function.

create_channel_user_data

User defined data to be passed to the create channel function for the first creation.

close_user_data

User data to be passed in to close handler.

received

Handler to manage frame reception on channel.

received_user_data

Data to be passed in to received handler.

on_channel_pool_created

A callback to be able to make channel process to be async.

user_data

User data to be passed in to on_channel_created.

Returns:

A newly created VortexChannelPool. The reference returned is already attached to the VortexConnection provided so, it is not required to release it. In the case the on_channel_pool_created handler is provided, the function returns NULL, and the channel pool reference is notified at the handler. Memory deallocation for the reference returned will be produced once the connection associated to it is deallocated.