00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MICROFEEDFEED_H
00020 #define MICROFEEDFEED_H
00021
00044 typedef struct _MicrofeedFeed MicrofeedFeed;
00045
00049 typedef struct _MicrofeedFeedIterator MicrofeedFeedIterator;
00050
00053 #include <microfeed-provider/microfeedpublisher.h>
00054 #include <microfeed-common/microfeedstore.h>
00055 #include <microfeed-common/microfeeditem.h>
00056 #include <microfeed-common/microfeedmisc.h>
00057 #include <microfeed-provider/microfeederror.h>
00058
00064 typedef void (*MicrofeedFeedDestroyCallback)(MicrofeedFeed* feed, void* user_data);
00065
00085 typedef MicrofeedError* (*MicrofeedFeedUpdateCallback)(MicrofeedFeed* feed, int user_initiated, void* user_data);
00086
00101 typedef MicrofeedError* (*MicrofeedFeedModifyItemCallback)(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item, void* user_data);
00102 typedef MicrofeedError* (*MicrofeedFeedDownloadItemDataCallback)(MicrofeedFeed* feed, const char* uid, void** data, size_t* length, void* user_data);
00103 typedef MicrofeedError* (*MicrofeedFeedMarkCallback)(MicrofeedFeed* feed, const char* uid, int mark_status, void* user_data);
00104
00105 typedef struct {
00106 MicrofeedFeedDestroyCallback destroy;
00107 MicrofeedFeedUpdateCallback update;
00108 MicrofeedFeedModifyItemCallback modify_item;
00109 MicrofeedFeedDownloadItemDataCallback download_item_data;
00110 MicrofeedFeedMarkCallback mark_item;
00111 } MicrofeedFeedCallbacks;
00112
00113 typedef enum {
00114 MICROFEED_FEED_PERMISSION_NONE = 0,
00115 MICROFEED_FEED_PERMISSION_ADD = 1 << 0
00116 } MicrofeedFeedPermission;
00117
00118 MicrofeedFeed* microfeed_feed_new(MicrofeedPublisher* publisher, const char* uri, const char* name, MicrofeedFeedPermission feed_permission, MicrofeedFeedCallbacks* callbacks, void* user_data);
00119 void microfeed_feed_free(MicrofeedFeed* feed);
00120 MicrofeedFeed* microfeed_feed_ref(MicrofeedFeed* feed);
00121 void microfeed_feed_unref(MicrofeedFeed* feed);
00122 MicrofeedWeakReference* microfeed_feed_get_weak_reference(MicrofeedFeed* feed);
00123 void microfeed_feed_add_free_callback(MicrofeedFeed* feed, MicrofeedFreeCallback free_callback, void* user_data);
00124 void microfeed_feed_remove_free_callback(MicrofeedFeed* feed, MicrofeedFreeCallback free_callback, void* user_data);
00125
00126 MicrofeedPublisher* microfeed_feed_get_publisher(MicrofeedFeed* feed);
00127 const char* microfeed_feed_get_uri(MicrofeedFeed* feed);
00128 const char* microfeed_feed_get_name(MicrofeedFeed* feed);
00129 void microfeed_feed_set_name(MicrofeedFeed* feed, const char* name);
00130 MicrofeedItem* microfeed_feed_get_metadata_item(MicrofeedFeed* feed);
00131 void microfeed_feed_replace_item(MicrofeedFeed* feed, MicrofeedItem* item);
00132 void microfeed_feed_remove_item(MicrofeedFeed* feed, const char* uid);
00133 void microfeed_feed_remove_items(MicrofeedFeed* feed, const char* start_uid, const char* end_uid);
00134 MicrofeedItem* microfeed_feed_get_item(MicrofeedFeed* feed, const char* uid);
00135 MicrofeedError* microfeed_feed_send_item_data(MicrofeedFeed* feed, const char* uid, const char* bus_name);
00136 MicrofeedFeedIterator* microfeed_feed_iterate(MicrofeedFeed* feed, const char* start_uid, int backwards);
00137 MicrofeedFeedIterator* microfeed_feed_iterate_timeline(MicrofeedFeed* feed, time_t start_timestamp, int backwards);
00138 void microfeed_feed_update(MicrofeedFeed* feed, const char* bus_name);
00139 void microfeed_feed_republish(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, unsigned int max_count, const char* bus_name);
00140 MicrofeedError* microfeed_feed_set_item_status(MicrofeedFeed* feed, const char* uid, MicrofeedItemStatus status_to_set);
00141 MicrofeedError* microfeed_feed_unset_item_status(MicrofeedFeed* feed, const char* uid, MicrofeedItemStatus status_to_unset);
00142 MicrofeedError* microfeed_feed_unset_item_statuses(MicrofeedFeed* feed, const char* start_uid, const char* end_uid, MicrofeedItemStatus status_to_unset);
00143 void microfeed_feed_ref_item_data(MicrofeedFeed* feed, const char* uid);
00144 void microfeed_feed_unref_item_data(MicrofeedFeed* feed, const char* uid);
00145 MicrofeedFeedPermission microfeed_feed_permission_from_string(const char* string);
00146 char* microfeed_feed_permission_to_string(MicrofeedFeedPermission item_permission);
00147
00148 void microfeed_feed_iterator_free(MicrofeedFeedIterator* iterator);
00149 MicrofeedFeed* microfeed_feed_iterator_get_feed(MicrofeedFeedIterator* iterator);
00150 MicrofeedItem* microfeed_feed_iterator_get_item(MicrofeedFeedIterator* iterator);
00151 void microfeed_feed_iterator_next(MicrofeedFeedIterator* iterator);
00152 int microfeed_feed_iterator_jump_and_remove_previous_items(MicrofeedFeedIterator* iterator, const char* uid);
00153
00159
00160 MicrofeedError* microfeed_feed_call_modify_item_callback(MicrofeedFeed* feed, MicrofeedItem* existing_item, MicrofeedItem* new_item);
00161
00162 #endif