00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MICROFEEDPUBLISHER_H
00020 #define MICROFEEDPUBLISHER_H
00021
00022 #include <time.h>
00023 #include <dbus/dbus.h>
00024
00040 typedef struct _MicrofeedPublisher MicrofeedPublisher;
00041
00042
00045 #include <microfeed-common/microfeedstore.h>
00046 #include <microfeed-provider/microfeedfeed.h>
00047 #include <microfeed-provider/microfeeddatabase.h>
00048 #include <microfeed-common/microfeeditem.h>
00049 #include <microfeed-common/microfeedthread.h>
00050 #include <microfeed-provider/microfeederror.h>
00051
00066 typedef MicrofeedFeed* (*MicrofeedPublisherInstantiateFeedCallback)(MicrofeedPublisher* publisher, const char* uri, void* user_data);
00067
00068 typedef void (*MicrofeedPublisherNoMoreSubscribersCallback)(MicrofeedPublisher* publisher, void* user_data);
00069
00077 typedef void (*MicrofeedPublisherInitializeSettingsCallback)(MicrofeedPublisher* publisher, void* user_data);
00078
00089 typedef int (*MicrofeedPublisherUpdateSettingCallback)(MicrofeedPublisher* publisher, const char* key, const char* value, void* user_data);
00090
00091 typedef MicrofeedError* (*MicrofeedPublisherDownloadImageCallback)(MicrofeedPublisher* publisher, const char* uid, void** data, size_t* length, void* user_data);
00092
00093 typedef int (*MicrofeedPublisherTimeoutHandler)(void* data);
00094
00095 typedef void* (*MicrofeedPublisherAddTimeoutCallback)(MicrofeedPublisher* publisher, unsigned long int interval, MicrofeedPublisherTimeoutHandler handler, void* data, void* user_data);
00096
00097 typedef void (*MicrofeedPublisherRemoveTimeoutCallback)(MicrofeedPublisher* publisher, void* timeout_implementation, void* user_data);
00098
00102 typedef struct _MicrofeedPublisherCallbacks {
00107 MicrofeedPublisherInstantiateFeedCallback instantiate_feed;
00111 MicrofeedPublisherInitializeSettingsCallback initialize_settings;
00115 MicrofeedPublisherUpdateSettingCallback update_setting;
00116
00117 MicrofeedPublisherDownloadImageCallback download_image;
00118
00119 MicrofeedPublisherNoMoreSubscribersCallback no_more_subscribers;
00120
00121 MicrofeedPublisherAddTimeoutCallback add_timeout;
00122 MicrofeedPublisherRemoveTimeoutCallback remove_timeout;
00123 } MicrofeedPublisherCallbacks;
00124
00125 MicrofeedPublisher* microfeed_publisher_new(const char* unique_identifier, const char* directory, DBusConnection* connection, MicrofeedPublisherCallbacks* callbacks, void* user_data);
00126 void microfeed_publisher_free(MicrofeedPublisher* publisher);
00127
00128 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);
00129 void microfeed_publisher_remove_setting(MicrofeedPublisher* publisher, const char* uid);
00130 char* microfeed_publisher_get_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* default_value);
00131 long int microfeed_publisher_get_setting_value_integer(MicrofeedPublisher* publisher, const char* uid, long int default_value);
00132 int microfeed_publisher_set_setting_value(MicrofeedPublisher* publisher, const char* uid, const char* value);
00133
00139
00140 MicrofeedDatabaseEnvironment* microfeed_publisher_get_database_environment(MicrofeedPublisher* publisher);
00141
00142
00143 void microfeed_publisher_handle_item_property_change(MicrofeedPublisher* publisher, MicrofeedItem* old_item, MicrofeedItem* new_item);
00144
00145
00146 void microfeed_publisher_send_item_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, MicrofeedItem* item);
00147
00148
00149 void microfeed_publisher_send_item_uid_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri, const char* uid);
00150
00151
00152 void microfeed_publisher_send_status_changed_signal(MicrofeedPublisher* publisher, const char* destination, const char* uri, const char* uid, const char status);
00153
00154
00155 void microfeed_publisher_send_feed_signal(MicrofeedPublisher* publisher, const char* destination, const char* signal_name, const char* uri);
00156
00157
00158 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);
00159
00160
00161 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);
00162
00163
00164 const char* microfeed_publisher_get_object_path(MicrofeedPublisher* publisher);
00165
00166
00167 const char* microfeed_publisher_get_identifier(MicrofeedPublisher* publisher);
00168
00169
00170 void microfeed_publisher_remove_subscriber(MicrofeedPublisher* publisher, const char* unique_connection_name);
00171
00172 #include <microfeed-provider/microfeedprovider.h>
00173
00174
00175 MicrofeedProvider* microfeed_publisher_get_provider(MicrofeedPublisher* publisher);
00176
00177
00178 void microfeed_publisher_set_provider(MicrofeedPublisher* publisher, MicrofeedProvider* provider);
00179
00180 #endif