Code

store: Let store object-types be private types.
authorSebastian Harl <sh@tokkee.org>
Fri, 2 Aug 2013 00:11:14 +0000 (17:11 -0700)
committerSebastian Harl <sh@tokkee.org>
Fri, 2 Aug 2013 00:11:14 +0000 (17:11 -0700)
The user should interact through the objects names or 'features' rather than
accessing any of the objects themselves.

src/core/store.c
src/include/core/store.h

index c4caecfe6a49caecc36caf20c2f6836a2bf88534..50991fcea78c244b17eef8e4b0dbbd98acb6ea5a 100644 (file)
@@ -49,9 +49,50 @@ static sdb_llist_t *host_list = NULL;
 static pthread_rwlock_t host_lock = PTHREAD_RWLOCK_INITIALIZER;
 
 /*
- * public types
+ * private types
  */
 
+static sdb_type_t sdb_host_type;
+static sdb_type_t sdb_attribute_type;
+static sdb_type_t sdb_service_type;
+
+typedef struct {
+       sdb_object_t super;
+       sdb_time_t last_update;
+} sdb_store_obj_t;
+#define SDB_STORE_OBJ(obj) ((sdb_store_obj_t *)(obj))
+#define SDB_CONST_STORE_OBJ(obj) ((const sdb_store_obj_t *)(obj))
+
+typedef struct {
+       sdb_store_obj_t super;
+
+       char *hostname;
+} sdb_service_t;
+#define SDB_SVC(obj) ((sdb_service_t *)(obj))
+#define SDB_CONST_SVC(obj) ((const sdb_service_t *)(obj))
+
+typedef struct {
+       sdb_store_obj_t super;
+
+       char *attr_value;
+       char *hostname;
+} sdb_attribute_t;
+#define SDB_ATTR(obj) ((sdb_attribute_t *)(obj))
+#define SDB_CONST_ATTR(obj) ((const sdb_attribute_t *)(obj))
+
+typedef struct {
+       sdb_store_obj_t super;
+
+       sdb_llist_t *attributes;
+       sdb_llist_t *services;
+} sdb_host_t;
+#define SDB_HOST(obj) ((sdb_host_t *)(obj))
+#define SDB_CONST_HOST(obj) ((const sdb_host_t *)(obj))
+
+/* shortcuts for accessing the sdb_store_obj_t attributes of inheriting
+ * objects */
+#define _last_update super.last_update
+
 static int
 sdb_host_init(sdb_object_t *obj, va_list __attribute__((unused)) ap)
 {
@@ -79,7 +120,7 @@ sdb_host_destroy(sdb_object_t *obj)
 } /* sdb_host_destroy */
 
 static sdb_object_t *
-sdb_host_do_clone(const sdb_object_t *obj)
+sdb_host_clone(const sdb_object_t *obj)
 {
        const sdb_host_t *host = (const sdb_host_t *)obj;
        sdb_host_t *new;
@@ -109,7 +150,7 @@ sdb_host_do_clone(const sdb_object_t *obj)
                }
        }
        return SDB_OBJ(new);
-} /* sdb_host_do_clone */
+} /* sdb_host_clone */
 
 static int
 sdb_attr_init(sdb_object_t *obj, va_list ap)
@@ -190,15 +231,15 @@ sdb_svc_clone(const sdb_object_t *obj)
        return SDB_OBJ(new);
 } /* sdb_svc_clone */
 
-const sdb_type_t sdb_host_type = {
+static sdb_type_t sdb_host_type = {
        sizeof(sdb_host_t),
 
        sdb_host_init,
        sdb_host_destroy,
-       sdb_host_do_clone
+       sdb_host_clone
 };
 
-const sdb_type_t sdb_attribute_type = {
+static sdb_type_t sdb_attribute_type = {
        sizeof(sdb_attribute_t),
 
        sdb_attr_init,
@@ -206,7 +247,7 @@ const sdb_type_t sdb_attribute_type = {
        sdb_attr_clone
 };
 
-const sdb_type_t sdb_service_type = {
+static sdb_type_t sdb_service_type = {
        sizeof(sdb_service_t),
 
        sdb_svc_init,
index af8e23cff6a390ce74a9f354b8f38a672b70d5e1..538390afb3d69d24aaf7cce07fa38c689a36840a 100644 (file)
 extern "C" {
 #endif
 
-extern const sdb_type_t sdb_host_type;
-extern const sdb_type_t sdb_attribute_type;
-extern const sdb_type_t sdb_service_type;
-
-typedef struct {
-       sdb_object_t super;
-       sdb_time_t last_update;
-} sdb_store_obj_t;
-#define SDB_STORE_OBJ_INIT(t) { SDB_OBJECT_TYPED_INIT(t), 0 }
-#define SDB_STORE_OBJ(obj) ((sdb_store_obj_t *)(obj))
-#define SDB_CONST_STORE_OBJ(obj) ((const sdb_store_obj_t *)(obj))
-
-typedef struct {
-       sdb_store_obj_t super;
-
-       char *hostname;
-} sdb_service_t;
-#define SDB_SVC_INIT { SDB_STORE_OBJ_INIT(sdb_service_type), NULL }
-#define SDB_SVC(obj) ((sdb_service_t *)(obj))
-#define SDB_CONST_SVC(obj) ((const sdb_service_t *)(obj))
-
-typedef struct {
-       sdb_store_obj_t super;
-
-       char *attr_value;
-       char *hostname;
-} sdb_attribute_t;
-#define SDB_ATTR_INIT { SDB_STORE_OBJ_INIT(sdb_attribute_type), NULL, NULL }
-#define SDB_ATTR(obj) ((sdb_attribute_t *)(obj))
-#define SDB_CONST_ATTR(obj) ((const sdb_attribute_t *)(obj))
-
-typedef struct {
-       sdb_store_obj_t super;
-
-       sdb_llist_t *attributes;
-       sdb_llist_t *services;
-} sdb_host_t;
-#define SDB_HOST_INIT { SDB_STORE_OBJ_INIT(sdb_host_type), NULL, NULL }
-#define SDB_HOST(obj) ((sdb_host_t *)(obj))
-#define SDB_CONST_HOST(obj) ((const sdb_host_t *)(obj))
-
-/* shortcuts for accessing the sdb_store_obj_t attributes of inheriting
- * objects */
-#define _last_update super.last_update
-
 /*
  * sdb_store_host:
  * Add/update a host in the store. If the host, identified by its