00001
00002 #ifndef MICROFEEDPUBLISHER_H
00003 #define MICROFEEDPUBLISHER_H
00004
00005 #include <time.h>
00006 #include <dbus/dbus.h>
00007
00023 typedef struct _MicrofeedPublisher MicrofeedPublisher;
00024
00025
00028 #include <microfeed-common/microfeedstore.h>
00029 #include <microfeed-provider/microfeedfeed.h>
00030 #include <microfeed-provider/microfeeddatabase.h>
00031 #include <microfeed-common/microfeeditem.h>
00032 #include <microfeed-common/microfeedthread.h>
00033 #include <microfeed-provider/microfeederror.h>
00034
00049 typedef MicrofeedFeed* (*MicrofeedPublisherInstantiateFeedCallback)(MicrofeedPublisher* publisher, const char* uri, void* user_data);
00050
00051 typedef void (*MicrofeedPublisherNoMoreSubscribersCallback)(MicrofeedPublisher* publisher, void* user_data);
00052
00060 typedef void (*MicrofeedPublisherInitializeSettingsCallback)(MicrofeedPublisher* publisher, void* user_data);
00061
00072 typedef int (*MicrofeedPublisherUpdateSettingCallback)(MicrofeedPublisher* publisher, const char* key, const char* value, void* user_data);
00073
00074 typedef MicrofeedError* (*MicrofeedPublisherDownloadImageCallback)(MicrofeedPublisher* publisher, const char* uid, void** data, size_t* length, void* user_data);
00075
00076 typedef void (*MicrofeedPublisherTimeoutHandler)(void* data);
00077
00078 typedef void* (*MicrofeedPublisherAddTimeoutCallback)(MicrofeedPublisher* publisher, unsigned long int interval, MicrofeedPublisherTimeoutHandler handler, void* data, void* user_data);
00079
00080 typedef void (*MicrofeedPublisherRemoveTimeoutCallback)(MicrofeedPublisher* publisher, void* timeout_implementation, void* user_data);
00081
00085 typedef struct _MicrofeedPublisherCallbacks {
00090 MicrofeedPublisherInstantiateFeedCallback instantiate_feed;
00094 MicrofeedPublisherInitializeSettingsCallback initialize_settings;
00098 MicrofeedPublisherUpdateSettingCallback update_setting;
00099
00100 MicrofeedPublisherDownloadImageCallback download_image;
00101
00102 MicrofeedPublisherNoMoreSubscribersCallback no_more_subscribers;
00103
00104 MicrofeedPublisherAddTimeoutCallback add_timeout;
00105 MicrofeedPublisherRemoveTimeoutCallback remove_timeout;
00106 } MicrofeedPublisherCallbacks;
00107
00108 MicrofeedPublisher* microfeed_publisher_new(const char* unique_identifier, const char* directory, DBusConnection* connection, MicrofeedPublisherCallbacks* callbacks, void* user_data);
00109 void microfeed_publisher_free(MicrofeedPublisher* publisher);
00110
00111 void microfeed_publisher_add_setting(MicrofeedPublisher* publisher, const char* uid, const char* text, const char* unit, const char* type, const char* length, const char* value);
00112 void microfeed_publisher_remove_setting(MicrofeedPublisher* publisher, const char* uid);
00113 char* microfeed_publisher_get_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* default_value);
00114 long int microfeed_publisher_get_setting_value_integer(MicrofeedPublisher* publisher, const char* uid, long int default_value);
00115 int microfeed_publisher_set_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* value);
00116 MicrofeedThread* microfeed_publisher_queue_thread(MicrofeedPublisher* publisher, MicrofeedThreadFunction function, void* data);
00117 MicrofeedThread* microfeed_publisher_start_singleton_update_thread(MicrofeedPublisher* publisher, MicrofeedThreadFunction function, void* user_data);
00118 MicrofeedThread* microfeed_publisher_get_singleton_update_thread(MicrofeedPublisher* publisher);
00119
00125
00126 MicrofeedDatabaseEnvironment* microfeed_publisher_get_database_environment(MicrofeedPublisher* publisher);
00127
00128
00129 void microfeed_publisher_handle_item_property_change(MicrofeedPublisher* publisher, MicrofeedItem* old_item, MicrofeedItem* new_item);
00130
00131
00132 void microfeed_publisher_send_item_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, MicrofeedItem* item);
00133
00134
00135 void microfeed_publisher_send_item_uid_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, const char* uid);
00136
00137
00138 void microfeed_publisher_send_status_changed_signal(MicrofeedPublisher* publisher, const char* destination, const char* uri, const char* uid, const char status);
00139
00140
00141 void microfeed_publisher_send_feed_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri);
00142
00143
00144 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);
00145
00146
00147 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);
00148
00149
00150 const char* microfeed_publisher_get_object_path(MicrofeedPublisher* publisher);
00151
00152
00153 const char* microfeed_publisher_get_identifier(MicrofeedPublisher* publisher);
00154
00155
00156 void microfeed_publisher_remove_subscriber(MicrofeedPublisher* publisher, const char* unique_connection_name);
00157
00158 #include <microfeed-provider/microfeedprovider.h>
00159
00160
00161 MicrofeedProvider* microfeed_publisher_get_provider(MicrofeedPublisher* publisher);
00162
00163
00164 void microfeed_publisher_set_provider(MicrofeedPublisher* publisher, MicrofeedProvider* provider);
00165
00166 #endif