aboutsummaryrefslogtreecommitdiff
path: root/rodisc.h
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2018-03-10 17:44:47 +0100
committerJavier <dev.git@javispedro.com>2018-03-10 17:45:40 +0100
commit037e989c3e618bef8120ba2df3a22abc57f9eaf8 (patch)
tree9a62b0972c65008199e2fffdaa32b5774211a0a9 /rodisc.h
parent07dd3830af6c920ac51958df3b688b2c9830fa00 (diff)
downloadrodisc-037e989c3e618bef8120ba2df3a22abc57f9eaf8.tar.gz
rodisc-037e989c3e618bef8120ba2df3a22abc57f9eaf8.zip
drop udisks dependency (instead use gio volume monitor)
Diffstat (limited to 'rodisc.h')
-rw-r--r--rodisc.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/rodisc.h b/rodisc.h
new file mode 100644
index 0000000..e1cd9ca
--- /dev/null
+++ b/rodisc.h
@@ -0,0 +1,61 @@
+#ifndef _RODISC_H_
+#define _RODISC_H_
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <gio/gio.h>
+
+#define RODISC_MDNS_SERVICE "_odisk._tcp"
+
+#define RODISC_IMAGE_MIME "application/octet-stream"
+
+#define RODISC_TYPE_GENERIC "public.optical-storage-media"
+#define RODISC_TYPE_CD "public.cd-media"
+#define RODISC_TYPE_DVD "public.dvd-media"
+#define RODISC_TYPE_BD "public.optical-storage-media"
+
+typedef struct {
+ char *id;
+ char *uri;
+ char *file_path;
+ GFile *file;
+ char *label;
+ const char *type;
+ uint64_t size;
+} RODisc;
+
+RODisc *rodisc_new();
+void rodisc_destroy(RODisc *disc);
+
+/** Lookup a given disc id on the exported discs */
+RODisc *rodisc_lookup(const gchar *id);
+/** Export a given disc object */
+void rodisc_export(RODisc *disc);
+/** Unexport and destroy a disc */
+void rodisc_remove(RODisc *disc);
+/** When a disc has changed */
+void rodisc_refresh(RODisc *disc);
+/** When all exported discs may have changed */
+void rodisc_refresh_all();
+
+// HTTP server part
+bool server_start();
+void server_stop();
+void server_register(RODisc *disc);
+void server_unregister(RODisc *disc);
+unsigned int server_get_port();
+
+// MDNS server part (Bonjour)
+bool mdns_start();
+void mdns_stop();
+void mdns_publish(RODisc *disc);
+void mdns_unpublish(RODisc *disc);
+
+/** Export a individual .iso file as a disk. */
+void file_add_disc(const char *path);
+
+// Disc change monitor part
+bool monitor_start();
+void monitor_stop();
+
+#endif /* _RODISC_H_ */