GrssFeedsSubscriber

GrssFeedsSubscriber — feeds subscriber

Synopsis

struct              GrssFeedsSubscriber;
GrssFeedsSubscriber * grss_feeds_subscriber_new         ();
gboolean            grss_feeds_subscriber_listen        (GrssFeedsSubscriber *sub,
                                                         GList *feeds);
GList *             grss_feeds_subscriber_get_listened  (GrssFeedsSubscriber *sub);
void                grss_feeds_subscriber_set_port      (GrssFeedsSubscriber *sub,
                                                         int port);
void                grss_feeds_subscriber_switch        (GrssFeedsSubscriber *sub,
                                                         gboolean run);
GInetAddress *      grss_feeds_subscriber_get_address   (GrssFeedsSubscriber *sub);
int                 grss_feeds_subscriber_get_port      (GrssFeedsSubscriber *sub);
SoupSession *       grss_feeds_subscriber_get_session   (GrssFeedsSubscriber *sub);

Object Hierarchy

  GObject
   +----GrssFeedsSubscriber

Signals

  "notification-received"                          : Run Last

Description

GrssFeedsSubscriber is an alternative for GrssFeedsPool, able to receive real-time notifications by feeds managed by one of the supported protocols. When the subscriber is executed (with grss_feeds_subscriber_switch()) it opens a server on a local port (configurable with grss_feeds_subscriber_set_port()), engage a subscription for each GrssFeedChannel passed with grss_feeds_subscriber_listen(), and waits for direct notifications by the remote server.

Pay attention to the fact this object doesn't provides any NAT traversing method to receive notification while behind a NAT.

Details

struct GrssFeedsSubscriber

struct GrssFeedsSubscriber;


grss_feeds_subscriber_new ()

GrssFeedsSubscriber * grss_feeds_subscriber_new         ();

Allocates a new GrssFeedsSubscriber.

Returns :

a new GrssFeedsSubscriber.

grss_feeds_subscriber_listen ()

gboolean            grss_feeds_subscriber_listen        (GrssFeedsSubscriber *sub,
                                                         GList *feeds);

To set the list of feeds to be managed by sub. The previous list, if any, is invalidated. After invokation to the function, grss_feeds_subscriber_switch() must be call to run the subscription. The list in feeds can be freed after calling this; linked GrssFeedChannel are g_object_ref'd here.

sub :

a GrssFeedsSubscriber.

feeds :

a list of GrssFeedChannel.

Returns :

TRUE if all GrssFeedChannels involved in feeds are valid and can be listened with one of the implemented procotols, FALSE otherwise.

grss_feeds_subscriber_get_listened ()

GList *             grss_feeds_subscriber_get_listened  (GrssFeedsSubscriber *sub);

Returns the list of feeds currently managed by sub.

sub :

a GrssFeedsSubscriber.

Returns :

a list of GrssFeedChannel, to be freed with g_list_free() when no longer in use. Do not modify elements found in this list.

grss_feeds_subscriber_set_port ()

void                grss_feeds_subscriber_set_port      (GrssFeedsSubscriber *sub,
                                                         int port);

To customize the port opened by the local server to catch incoming publishers' events. By default this is 8444. Changing the port while the subscriber is running imply restart the local server. Pay attention to the fact many publishers' implementations accept only certain ports.

sub :

a GrssFeedsSubscriber.

port :

new listening port for the server.

grss_feeds_subscriber_switch ()

void                grss_feeds_subscriber_switch        (GrssFeedsSubscriber *sub,
                                                         gboolean run);

Permits to pause or resume sub listening for events.

sub :

a GrssFeedsSubscriber.

run :

TRUE to run the subscriber, FALSE to pause it.

grss_feeds_subscriber_get_address ()

GInetAddress *      grss_feeds_subscriber_get_address   (GrssFeedsSubscriber *sub);

This function returns the Internet address where sub is listening for external events. It is often required by GrssFeedsSubscriberHandlers while subscribing contents to specify the local endpoint for communications.

sub :

a GrssFeedsSubscriber.

Returns :

the GInetAddress used by sub, or NULL if the GrssFeedsSubscriber is switched off.

grss_feeds_subscriber_get_port ()

int                 grss_feeds_subscriber_get_port      (GrssFeedsSubscriber *sub);

This function returns the Internet port where sub is listening for external events. It is often required by GrssFeedsSubscriberHandlers while subscribing contents to specify the local endpoint for communications.

sub :

a GrssFeedsSubscriber.

Returns :

the port of the socket locally opened by sub.

grss_feeds_subscriber_get_session ()

SoupSession *       grss_feeds_subscriber_get_session   (GrssFeedsSubscriber *sub);

To obtain the internal SoupSession of a GrssFeedsSubscriber, so to re-use it in GrssFeedsSubscriberHandlers or similar tasks.

sub :

a GrssFeedsSubscriber.

Returns :

the SoupSession used by the provided GrssFeedsSubscriber.

Signal Details

The "notification-received" signal

void                user_function                      (GrssFeedsSubscriber *pool,
                                                        GObject             *feed,
                                                        GObject             *item,
                                                        gpointer             user_data)      : Run Last

Emitted when a notification has been received and parsed. The item is cached and unref'd when the GrssFeedsSubscriber is destroyed or a new set of feeds is provided.

pool :

the GrssFeedsSubscriber emitting the signal.

feed :

the GrssFeedChannel which has been updated.

item :

the GrssFeedItem received.

user_data :

user data set when the signal handler was connected.