00001
00002 #ifndef MICROFEEDPUBLISHER_H
00003 #define MICROFEEDPUBLISHER_H
00004
00005 #include <time.h>
00006 #include <dbus/dbus.h>
00007
00021 typedef struct _MicrofeedPublisher MicrofeedPublisher;
00022
00023
00026 #include <microfeed/microfeedstore.h>
00027 #include <microfeed/microfeedfeed.h>
00028 #include <microfeed/microfeeddatabase.h>
00029 #include <microfeed/microfeeditem.h>
00030 #include <microfeed/microfeedthread.h>
00031 #include <microfeed/microfeederror.h>
00032
00047 typedef MicrofeedFeed* (*MicrofeedPublisherInstantiateFeedCallback)(MicrofeedPublisher* publisher, const char* uri, void* user_data);
00048
00049 typedef void (*MicrofeedPublisherNoMoreSubscribersCallback)(MicrofeedPublisher* publisher, void* user_data);
00050
00058 typedef void (*MicrofeedPublisherInitializeSettingsCallback)(MicrofeedPublisher* publisher, void* user_data);
00059
00070 typedef int (*MicrofeedPublisherUpdateSettingCallback)(MicrofeedPublisher* publisher, const char* key, const char* value, void* user_data);
00071
00072 typedef MicrofeedError* (*MicrofeedPublisherDownloadImageCallback)(MicrofeedPublisher* publisher, const char* uid, void** data, size_t* length, void* user_data);
00073
00077 typedef struct _MicrofeedPublisherCallbacks {
00082 MicrofeedPublisherInstantiateFeedCallback instantiate_feed;
00086 MicrofeedPublisherInitializeSettingsCallback initialize_settings;
00090 MicrofeedPublisherUpdateSettingCallback update_setting;
00091
00092 MicrofeedPublisherDownloadImageCallback download_image;
00093
00094 MicrofeedPublisherNoMoreSubscribersCallback no_more_subscribers;
00095 } MicrofeedPublisherCallbacks;
00096
00097 MicrofeedPublisher* microfeed_publisher_new(const char* unique_identifier, const char* directory, DBusConnection* connection, MicrofeedPublisherCallbacks* callbacks, void* user_data);
00098 void microfeed_publisher_free(MicrofeedPublisher* publisher);
00099
00100 void microfeed_publisher_add_setting(MicrofeedPublisher* publisher, MicrofeedItem* item);
00101 void microfeed_publisher_remove_setting(MicrofeedPublisher* publisher, const char* uid);
00102 const char* microfeed_publisher_get_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* default_value);
00103 long int microfeed_publisher_get_setting_value_integer(MicrofeedPublisher* publisher, const char* uid, long int default_value);
00104 int microfeed_publisher_set_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* value);
00105 MicrofeedThread* microfeed_publisher_queue_thread(MicrofeedPublisher* publisher, MicrofeedThreadFunction function, void* data);
00106 MicrofeedThread* microfeed_publisher_start_singleton_update_thread(MicrofeedPublisher* publisher, MicrofeedThreadFunction function, void* user_data);
00107 MicrofeedThread* microfeed_publisher_get_singleton_update_thread(MicrofeedPublisher* publisher);
00108
00112
00113 MicrofeedDatabaseEnvironment* microfeed_publisher_get_database_environment(MicrofeedPublisher* publisher);
00114
00115
00116 void microfeed_publisher_handle_item_property_change(MicrofeedPublisher* publisher, MicrofeedItem* old_item, MicrofeedItem* new_item);
00117
00118
00119 void microfeed_publisher_send_item_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, MicrofeedItem* item);
00120
00121
00122 void microfeed_publisher_send_item_uid_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, const char* uid);
00123
00124
00125 void microfeed_publisher_send_status_changed_signal(MicrofeedPublisher* publisher, const char* destination, const char* uri, const char* uid, const char status);
00126
00127
00128 void microfeed_publisher_send_feed_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri);
00129
00130
00131 void microfeed_publisher_send_error_signal(MicrofeedPublisher* publisher, const char* destination, const char* error_name, const char* uri, const char* uid, const char* error_message);
00132
00133
00134 void microfeed_publisher_send_item_data_signal(MicrofeedPublisher* publisher, const char* destination, const char* uri, const char* uid, const void* data, size_t data_size);
00135
00136
00137 const char* microfeed_publisher_get_object_path(MicrofeedPublisher* publisher);
00138
00139
00140 const char* microfeed_publisher_get_identifier(MicrofeedPublisher* publisher);
00141
00142
00143 void microfeed_publisher_remove_subscriber(MicrofeedPublisher* publisher, const char* unique_connection_name);
00144
00145 #include "microfeedprovider.h"
00146
00147
00148 MicrofeedProvider* microfeed_publisher_get_provider(MicrofeedPublisher* publisher);
00149
00150
00151 void microfeed_publisher_set_provider(MicrofeedPublisher* publisher, MicrofeedProvider* provider);
00152
00153
00154 #endif