McpDispatchOperationPolicy

McpDispatchOperationPolicy — Dispatch Operation policy object, implemented by plugins

Synopsis

#include <mission-control-plugins/mission-control-plugins.h>

                    McpDispatchOperationPolicy;
                    McpDispatchOperationPolicyIface;
void                mcp_dispatch_operation_policy_check (McpDispatchOperationPolicy *policy,
                                                         McpDispatchOperation *dispatch_operation);
void                mcp_dispatch_operation_policy_iface_implement_check
                                                        (McpDispatchOperationPolicyIface *iface,
                                                         void (implMcpDispatchOperationPolicy *, McpDispatchOperation *) ());

Object Hierarchy

  GInterface
   +----McpDispatchOperationPolicy

Prerequisites

McpDispatchOperationPolicy requires GObject.

Description

Plugins may implement McpDispatchOperationPolicy in order to apply policy to Telepathy channel dispatch operations passing through the Channel Dispatcher part of Mission Control. This interface behaves rather like the Observer clients in the Telepathy specification, and has access to the same information, but runs within the Mission Control process rather than being invoked over D-Bus.

To do so, the plugin must implement a GObject subclass that implements McpDispatchOperationPolicy, then return an instance of that subclass from mcp_plugin_ref_nth_object().

The contents of the McpDispatchOperationPolicyIface struct are not public, so to provide an implementation of the check method, plugins should call mcp_dispatch_operation_policy_iface_implement_check() from the interface initialization function, like this:

Example 3. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
G_DEFINE_TYPE_WITH_CODE (MyPlugin, my_plugin,
   G_TYPE_OBJECT,
   G_IMPLEMENT_INTERFACE (...);
   G_IMPLEMENT_INTERFACE (MCP_TYPE_DISPATCH_OPERATION_POLICY,
     cdo_policy_iface_init);
   G_IMPLEMENT_INTERFACE (...))
/* ... */
static void
cdo_policy_iface_init (McpDispatchOperationPolicyIface *iface,
    gpointer unused G_GNUC_UNUSED)
{
  mcp_dispatch_operation_policy_iface_implement_check (iface,
      my_plugin_check_cdo);
}


A single object can implement more than one interface; for instance, it may be useful to combine this interface with McpRequestPolicy.

Details

McpDispatchOperationPolicy

typedef struct _McpDispatchOperationPolicy McpDispatchOperationPolicy;


McpDispatchOperationPolicyIface

typedef struct _McpDispatchOperationPolicyIface McpDispatchOperationPolicyIface;


mcp_dispatch_operation_policy_check ()

void                mcp_dispatch_operation_policy_check (McpDispatchOperationPolicy *policy,
                                                         McpDispatchOperation *dispatch_operation);

Check what to do with a bundle of channels. Implementations of this method can use methods on dispatch_operation to examine the channels, delay dispatching, close the channels, etc. in order to impose whatever policy the plugin requires.

Mission Control calls this function in each plugin after invoking Observers, but before Approvers, and without waiting for Observers to reply.

policy :

an implementation of this interface, provided by a plugin

dispatch_operation :

an object representing a dispatch operation, i.e. a bundle of channels being dispatched

mcp_dispatch_operation_policy_iface_implement_check ()

void                mcp_dispatch_operation_policy_iface_implement_check
                                                        (McpDispatchOperationPolicyIface *iface,
                                                         void (implMcpDispatchOperationPolicy *, McpDispatchOperation *) ());

iface :

the interface

See Also

McpDispatchOperation