InfCommunicationManager

InfCommunicationManager — Handling multiple communication sessions

Stability Level

Unstable, unless otherwise indicated

Functions

Types and Values

Object Hierarchy

    GObject
    ╰── InfCommunicationManager

Includes

#include <libinfinity/communication/inf-communication-manager.h>

Description

InfCommunicationManager manages multiple communication sessions represented by InfCommunicationGroup. A InfCommunicationGroup provides an easy way to send messages between group members, possibly sharing connections with other groups handled by the same InfCommunicationManager.

Functions

inf_communication_manager_new ()

InfCommunicationManager *
inf_communication_manager_new (void);

Creates a new InfCommunicationManager.

[constructor]

Returns

A new InfCommunicationManager.

[transfer full]


inf_communication_manager_open_group ()

InfCommunicationHostedGroup *
inf_communication_manager_open_group (InfCommunicationManager *manager,
                                      const gchar *group_name,
                                      const gchar * const*methods);

Opens a new communication group published by the local host. group_name is an identifier for the group via which other hosts can join the group using inf_communication_manager_join_group(). It needs to be unique among all groups opened by the local host.

methods specifies what communication methods the group should use, in order of priority. If a method is not supported for a given network, then the next one in the array is tried. If none is supported, then the "central" method will be used, which is guaranteed to be supported for all networks.

Parameters

manager

A InfCommunicationManager.

 

group_name

A name for the new group.

 

methods

Methods to support, or NULL.

[allow-none][array zero-terminated=1]

Returns

A InfCommunicationHostedGroup. Free with g_object_unref() to leave the group.

[transfer full]


inf_communication_manager_join_group ()

InfCommunicationJoinedGroup *
inf_communication_manager_join_group (InfCommunicationManager *manager,
                                      const gchar *group_name,
                                      InfXmlConnection *publisher_conn,
                                      const gchar *method);

Joins a communication group published by a remote host. publisher_conn needs to be a to the publishing host with status INF_XML_CONNECTION_OPEN or INF_XML_CONNECTION_OPENING. group_name specifies the name of the group to join.

method specifies the communication method to use. It must match the communication method the publisher has chosen for publisher_conn 's network (see inf_communication_group_get_method_for_network()). The function returns NULL if method is not supported (which means inf_communication_manager_get_factory_for() for publisher_conn 's network and method returns NULL).

Parameters

manager

A InfCommunicationManager.

 

group_name

The group to join.

 

publisher_conn

A InfXmlConnection to the publishing host.

 

method

The communication method to use.

 

Returns

A new InfCommunicationJoinedGroup, or NULL. Free with g_object_unref() to leave the group.

[transfer full][allow-none]


inf_communication_manager_add_factory ()

void
inf_communication_manager_add_factory (InfCommunicationManager *manager,
                                       InfCommunicationFactory *factory);

Adds a new InfCommunicationFactory to manager . This makes manager support all method/network combinations that factory supports. If multiple added factories support the same combination, the one which was added first will be used to instantiate the InfCommunicationMethod.

Parameters

manager

A InfCommunicationManager.

 

factory

The InfCommunicationFactory to add.

 

inf_communication_manager_get_factory_for ()

InfCommunicationFactory *
inf_communication_manager_get_factory_for
                               (InfCommunicationManager *manager,
                                const gchar *network,
                                const gchar *method_name);

Returns the InfCommunicationFactory that manager will use to instantiate a InfCommunicationMethod for method_name on network , or NULL if the network/method combination is not supported.

Parameters

manager

A InfCommunicationManager.

 

network

A network identifier.

 

method_name

A method name.

 

Returns

A InfCommunicationFactory, or NULL.

[transfer none][allow-none]

Types and Values

struct InfCommunicationManager

struct InfCommunicationManager;

InfCommunicationManager is an opaque data type. You should only access it via the public API functions.


struct InfCommunicationManagerClass

struct InfCommunicationManagerClass {
};

This structure does not contain any public fields.