Building better abstractions for the backend interface
authorArt Cancro <ajc@citadel.org>
Wed, 9 Aug 2023 14:20:44 +0000 (10:20 -0400)
committerArt Cancro <ajc@citadel.org>
Wed, 9 Aug 2023 14:20:44 +0000 (10:20 -0400)
citadel/Makefile
citadel/server/backends/berkeley_db/berkeley_db.c
citadel/server/backends/berkeley_db/berkeley_db.h [new file with mode: 0644]
citadel/server/database.c [new file with mode: 0644]

index 281030249b11d0cb4178de67c85e4209b2568e71..c398891bb505ba80964a0f41475eabdd38a9a234 100644 (file)
@@ -24,7 +24,7 @@ citserver: $(OBJECTS)
                -lresolv -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl -ldb \
                -o citserver
 
-$(SOURCES): server/*.h server/modules/*/*.h
+$(SOURCES): server/*.h server/modules/*/*.h server/backends/*/*.h
        @touch $@
 
 %.o: %.c
index 69de8abcfa218ee1a44f70c7464f958425014f0c..dec082234c31057f46896cbf0027980929d1bea6 100644 (file)
@@ -29,6 +29,7 @@
 #include "../../control.h"
 #include "../../citserver.h"
 #include "../../config.h"
+#include "berkeley_db.h"
 
 void                   (*cdb_open_databases)(void)                             = NULL;
 void                   (*cdb_close_databases)(void)                            = NULL;
@@ -782,7 +783,3 @@ void bdb_init_backend(void) {
 }
 
 
-// This will get split out into a separate file.  It will act as a marshal for multiple database backends.
-void cdb_init_backends(void) {
-       bdb_init_backend();             // For now, Berkeley DB is the only backend, so we always initialize it.
-}
diff --git a/citadel/server/backends/berkeley_db/berkeley_db.h b/citadel/server/backends/berkeley_db/berkeley_db.h
new file mode 100644 (file)
index 0000000..651376a
--- /dev/null
@@ -0,0 +1,6 @@
+// Copyright (c) 1987-2023 by the citadel.org team
+//
+// This program is open source software.  Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
+
+void bdb_init_backend(void);
diff --git a/citadel/server/database.c b/citadel/server/database.c
new file mode 100644 (file)
index 0000000..2ba0102
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright (c) 1987-2023 by the citadel.org team
+// This program is open source software.  Use, duplication, or disclosure
+// are subject to the terms of the GNU General Public License, version 3.
+
+// The functions in this file handle the selection and activation of a storage backend for Citadel Server.
+// Right now, it simply activates Berkeley DB because that's the only one we have.
+
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <libcitadel.h>
+#include "ctdl_module.h"
+#include "control.h"
+#include "citserver.h"
+#include "config.h"
+
+#include "backends/berkeley_db/berkeley_db.h"
+
+void cdb_init_backends(void) {
+       bdb_init_backend();
+}