00001 #ifndef MICROFEEDFEED_H
00002 #define MICROFEEDFEED_H
00003
00026 typedef struct _MicrofeedFeed MicrofeedFeed;
00027
00031 typedef struct _MicrofeedFeedIterator MicrofeedFeedIterator;
00032
00035 #include <microfeed-provider/microfeedpublisher.h>
00036 #include <microfeed-common/microfeedstore.h>
00037 #include <microfeed-common/microfeeditem.h>
00038 #include <microfeed-common/microfeedmisc.h>
00039 #include <microfeed-provider/microfeederror.h>
00040
00046 typedef void (*MicrofeedFeedDestroyCallback)(MicrofeedFeed* feed, void* user_data);
00047
00067 typedef MicrofeedError* (*MicrofeedFeedUpdateCallback)(MicrofeedFeed* feed, int user_initiated, void* user_data);
00068
00083 typedef MicrofeedError* (*MicrofeedFeedModifyItemCallback)(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item, void* user_data);
00084 typedef MicrofeedError* (*MicrofeedFeedDownloadItemDataCallback)(MicrofeedFeed* feed, const char* uid, void** data, size_t* length, void* user_data);
00085 typedef MicrofeedError* (*MicrofeedFeedMarkCallback)(MicrofeedFeed* feed, const char* uid, int mark_status, void* user_data);
00086
00087 typedef struct {
00088 MicrofeedFeedDestroyCallback destroy;
00089 MicrofeedFeedUpdateCallback update;
00090 MicrofeedFeedModifyItemCallback modify_item;
00091 MicrofeedFeedDownloadItemDataCallback download_item_data;
00092 MicrofeedFeedMarkCallback mark_item;
00093 } MicrofeedFeedCallbacks;
00094
00095 typedef enum {
00096 MICROFEED_FEED_PERMISSION_NONE = 0,
00097 MICROFEED_FEED_PERMISSION_ADD = 1 << 0
00098 } MicrofeedFeedPermission;
00099
00100 MicrofeedFeed* microfeed_feed_new(MicrofeedPublisher* publisher, const char* uri, const char* name, MicrofeedFeedPermission feed_permission, MicrofeedFeedCallbacks* callbacks, void* user_data);
00101 void microfeed_feed_free(MicrofeedFeed* feed);
00102 MicrofeedFeed* microfeed_feed_ref(MicrofeedFeed* feed);
00103 void microfeed_feed_unref(MicrofeedFeed* feed);
00104 MicrofeedWeakReference* microfeed_feed_get_weak_reference(MicrofeedFeed* feed);
00105
00106 MicrofeedPublisher* microfeed_feed_get_publisher(MicrofeedFeed* feed);
00107 int microfeed_feed_is_using_threads(MicrofeedFeed* feed);
00108 void microfeed_feed_stop_update(MicrofeedFeed* feed);
00109 void microfeed_feed_replace_item(MicrofeedFeed* feed, MicrofeedItem* item);
00110 void microfeed_feed_remove_item(MicrofeedFeed* feed, const char* uid);
00111 void microfeed_feed_remove_items(MicrofeedFeed* feed, const char* start_uid, const char* end_uid);
00112 void microfeed_feed_add_subscriber(MicrofeedFeed* feed, const char* bus_name);
00113 MicrofeedItem* microfeed_feed_get_item(MicrofeedFeed* feed, const char* uid);
00114 int microfeed_feed_get_subscriber_count(MicrofeedFeed* feed);
00115 const char* microfeed_feed_get_uri(MicrofeedFeed* feed);
00116 const char* microfeed_feed_get_name(MicrofeedFeed* feed);
00117 void microfeed_feed_set_name(MicrofeedFeed* feed, const char* name);
00118 MicrofeedItem* microfeed_feed_get_metadata_item(MicrofeedFeed* feed);
00119 MicrofeedFeedIterator* microfeed_feed_iterate(MicrofeedFeed* feed, const char* start_uid, int backwards);
00120 MicrofeedFeedIterator* microfeed_feed_iterate_timeline(MicrofeedFeed* feed, time_t start_timestamp, int backwards);
00121 void microfeed_feed_remove_subscriber(MicrofeedFeed* feed, const char* bus_name);
00122 void microfeed_feed_update(MicrofeedFeed* feed, const char* bus_name);
00123 void microfeed_feed_republish(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, unsigned int max_count, const char* bus_name);
00124 int microfeed_feed_set_item_status(MicrofeedFeed* feed, const char* uid, MicrofeedItemStatus status_to_set);
00125 int microfeed_feed_unset_item_status(MicrofeedFeed* feed, const char* uid, MicrofeedItemStatus status_to_unset);
00126 void microfeed_feed_unset_item_statuses(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, MicrofeedItemStatus status_to_unset);
00127 void microfeed_feed_send_item_data(MicrofeedFeed* feed, const char* uid, const char* bus_name);
00128 void microfeed_feed_ref_item_data(MicrofeedFeed* feed, const char* uid);
00129 void microfeed_feed_unref_item_data(MicrofeedFeed* feed, const char* uid);
00130 MicrofeedFeedPermission microfeed_feed_permission_from_string(const char* string);
00131 char* microfeed_feed_permission_to_string(MicrofeedFeedPermission item_permission);
00132
00133 void microfeed_feed_iterator_free(MicrofeedFeedIterator* iterator);
00134 MicrofeedFeed* microfeed_feed_iterator_get_feed(MicrofeedFeedIterator* iterator);
00135 MicrofeedItem* microfeed_feed_iterator_get_item(MicrofeedFeedIterator* iterator);
00136 void microfeed_feed_iterator_next(MicrofeedFeedIterator* iterator);
00137 int microfeed_feed_iterator_jump_and_remove_previous_items(MicrofeedFeedIterator* iterator, const char* uid);
00138
00144
00145 void microfeed_feed_call_modify_item_callback(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item);
00146
00147 #endif