summaryrefslogtreecommitdiffabout
path: root/src/vmod-binlog.h
Side-by-side diff
Diffstat (limited to 'src/vmod-binlog.h') (more/less context) (ignore whitespace changes)
-rw-r--r--src/vmod-binlog.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/vmod-binlog.h b/src/vmod-binlog.h
new file mode 100644
index 0000000..db6c7f0
--- a/dev/null
+++ b/src/vmod-binlog.h
@@ -0,0 +1,71 @@
+/* This file is part of vmod-binlog
+ Copyright (C) 2013 Sergey Poznyakoff
+
+ Vmod-binlog is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ Vmod-binlog is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with vmod-binlog. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+
+#define SIZE_T_MAX ((size_t)~0)
+
+#ifndef BINLOG_SIZE
+# define BINLOG_SIZE (1024*1024*1024)
+#endif
+
+#ifndef BINLOG_PATTERN
+# define BINLOG_PATTERN "%Y/%m/%d.log"
+#endif
+
+#ifndef BINLOG_INTERVAL
+# define BINLOG_INTERVAL 86400
+#endif
+
+#ifndef BINLOG_UMASK
+# define BINLOG_UMASK 0077
+#endif
+
+struct binlog_record {
+ long nid; /* node ID */
+ long aid; /* article ID */
+ time_t ts; /* timestamp */
+};
+
+#define BINLOG_MAGIC_STR "NXCBINLOG"
+#define BINLOG_MAGIC_LEN (sizeof(BINLOG_MAGIC_STR) - 1)
+#define BINLOG_VERSION 0x00010000UL
+
+struct binlog_file_header {
+ char magic[BINLOG_MAGIC_LEN];
+ char pad[16 - BINLOG_MAGIC_LEN];
+ uint32_t version;
+ size_t recsize;
+ size_t recnum;
+};
+
+#define BINLOG_HEADER_SIZE \
+ ((sizeof(struct binlog_file_header) + sizeof(struct binlog_record) - 1) / \
+ sizeof(struct binlog_record))
+
+union binlog_header {
+ struct binlog_file_header hdr;
+ struct binlog_record pad[BINLOG_HEADER_SIZE];
+};
+
+#define binlog_size(conf) \
+ (sizeof(union binlog_header) + \
+ (conf)->recidx * sizeof(struct binlog_record))
+#define binlog_recnum(conf) \
+ (((conf)->size - sizeof(union binlog_header)) / \
+ sizeof(struct binlog_record))
+

Return to:

Send suggestions and report system problems to the System administrator.