00001 #ifndef MICROFEEDFEED_H
00002 #define MICROFEEDFEED_H
00003
00024 typedef struct _MicrofeedFeed MicrofeedFeed;
00025
00029 typedef struct _MicrofeedFeedIterator MicrofeedFeedIterator;
00030
00033 #include <microfeed/microfeedpublisher.h>
00034 #include <microfeed/microfeedstore.h>
00035 #include <microfeed/microfeeditem.h>
00036 #include <microfeed/microfeedmisc.h>
00037 #include <microfeed/microfeederror.h>
00038
00044 typedef void (*MicrofeedFeedDestroyCallback)(MicrofeedFeed* feed, void* user_data);
00045
00060 typedef MicrofeedError* (*MicrofeedFeedUpdateCallback)(MicrofeedFeed* feed, int user_initiated, void* user_data);
00061 typedef MicrofeedError* (*MicrofeedFeedModifyItemCallback)(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item, void* user_data);
00062 typedef MicrofeedError* (*MicrofeedFeedDownloadItemDataCallback)(MicrofeedFeed* feed, const char* uid, void** data, size_t* length, void* user_data);
00063
00064 typedef struct {
00065 MicrofeedFeedDestroyCallback destroy;
00066 MicrofeedFeedUpdateCallback update;
00067 MicrofeedFeedModifyItemCallback modify_item;
00068 MicrofeedFeedDownloadItemDataCallback download_item_data;
00069 } MicrofeedFeedCallbacks;
00070
00071 MicrofeedFeed* microfeed_feed_new(MicrofeedPublisher* publisher, const char* uri, MicrofeedFeedCallbacks* callbacks, void* user_data);
00072 void microfeed_feed_free(MicrofeedFeed* feed);
00073 MicrofeedFeed* microfeed_feed_ref(MicrofeedFeed* feed);
00074 void microfeed_feed_unref(MicrofeedFeed* feed);
00075 MicrofeedWeakReference* microfeed_feed_get_weak_reference(MicrofeedFeed* feed);
00076
00077 MicrofeedPublisher* microfeed_feed_get_publisher(MicrofeedFeed* feed);
00078 int microfeed_feed_is_using_threads(MicrofeedFeed* feed);
00079 void microfeed_feed_stop_update(MicrofeedFeed* feed);
00080 void microfeed_feed_replace_item(MicrofeedFeed* feed, MicrofeedItem* item);
00081 void microfeed_feed_remove_item(MicrofeedFeed* feed, const char* uid);
00082 void microfeed_feed_add_subscriber(MicrofeedFeed* feed, const char* bus_name);
00083 MicrofeedItem* microfeed_feed_get_item(MicrofeedFeed* feed, const char* uid);
00084 int microfeed_feed_get_subscriber_count(MicrofeedFeed* feed);
00085 const char* microfeed_feed_get_uri(MicrofeedFeed* feed);
00086 MicrofeedFeedIterator* microfeed_feed_iterate(MicrofeedFeed* feed, const char* start_uid, int backwards);
00087 MicrofeedFeedIterator* microfeed_feed_iterate_timeline(MicrofeedFeed* feed, time_t start_timestamp, int backwards);
00088 void microfeed_feed_remove_subscriber(MicrofeedFeed* feed, const char* bus_name);
00089 void microfeed_feed_update(MicrofeedFeed* feed, const char* bus_name);
00090 void microfeed_feed_republish(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, unsigned int max_count, const char* bus_name);
00091 int microfeed_feed_unset_item_status(MicrofeedFeed* feed, const char* uid, MicrofeedItemStatus status_to_unset);
00092 void microfeed_feed_unset_item_statuses(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, MicrofeedItemStatus status_to_unset);
00093 void microfeed_feed_add_new_setting(MicrofeedFeed* feed, const char* uid, time_t position, const char* text, const char* unit, const char* type, const char* value);
00094 void microfeed_feed_send_item_data(MicrofeedFeed* feed, const char* uid, const char* bus_name);
00095 void microfeed_feed_ref_item_data(MicrofeedFeed* feed, const char* uid);
00096 void microfeed_feed_unref_item_data(MicrofeedFeed* feed, const char* uid);
00097
00098 void microfeed_feed_iterator_free(MicrofeedFeedIterator* iterator);
00099 MicrofeedFeed* microfeed_feed_iterator_get_feed(MicrofeedFeedIterator* iterator);
00100 MicrofeedItem* microfeed_feed_iterator_get_item(MicrofeedFeedIterator* iterator);
00101 void microfeed_feed_iterator_next(MicrofeedFeedIterator* iterator);
00102 int microfeed_feed_iterator_jump_and_remove_previous_items(MicrofeedFeedIterator* iterator, const char* uid);
00103
00106
00107 void microfeed_feed_call_modify_item_callback(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item);
00108
00109 #endif