MINOR: spoa-server: move some definition from spoa_server.c to spoa_server.h
This will allow to add some other files to the project
diff --git a/contrib/spoa_server/spoa.h b/contrib/spoa_server/spoa.h
new file mode 100644
index 0000000..81f5816
--- /dev/null
+++ b/contrib/spoa_server/spoa.h
@@ -0,0 +1,81 @@
+/* Main SPOA server includes
+ *
+ * Copyright 2016 HAProxy Technologies, Christopher Faulet <cfaulet@haproxy.com>
+ * Copyright 2018 OZON / Thierry Fournier <thierry.fournier@ozon.io>
+ *
+ * This program 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
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef __SPOA_H__
+#define __SPOA_H__
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <netinet/in.h>
+
+#define MAX_FRAME_SIZE 16384
+#define SPOP_VERSION "1.0"
+#define SPOA_CAPABILITIES ""
+
+/* All supported data types */
+enum spoe_data_type {
+ SPOE_DATA_T_NULL = 0,
+ SPOE_DATA_T_BOOL,
+ SPOE_DATA_T_INT32,
+ SPOE_DATA_T_UINT32,
+ SPOE_DATA_T_INT64,
+ SPOE_DATA_T_UINT64,
+ SPOE_DATA_T_IPV4,
+ SPOE_DATA_T_IPV6,
+ SPOE_DATA_T_STR,
+ SPOE_DATA_T_BIN,
+ SPOE_DATA_TYPES
+};
+
+/* Scopes used for variables set by agents. It is a way to be agnotic to vars
+ * scope. */
+enum spoe_vars_scope {
+ SPOE_SCOPE_PROC = 0, /* <=> SCOPE_PROC */
+ SPOE_SCOPE_SESS, /* <=> SCOPE_SESS */
+ SPOE_SCOPE_TXN, /* <=> SCOPE_TXN */
+ SPOE_SCOPE_REQ, /* <=> SCOPE_REQ */
+ SPOE_SCOPE_RES, /* <=> SCOPE_RES */
+};
+
+struct worker {
+ unsigned int id;
+ char buf[MAX_FRAME_SIZE];
+ unsigned int len;
+ unsigned int size;
+ int status_code;
+ unsigned int stream_id;
+ unsigned int frame_id;
+ bool healthcheck;
+ int ip_score; /* -1 if unset, else between 0 and 100 */
+};
+
+struct chunk {
+ char *str; /* beginning of the string itself. Might not be 0-terminated */
+ int len; /* current size of the string from first to last char */
+};
+
+union spoe_value {
+ bool boolean; /* use for boolean */
+ int32_t sint32; /* used for signed 32bits integers */
+ uint32_t uint32; /* used for signed 32bits integers */
+ int32_t sint64; /* used for signed 64bits integers */
+ uint32_t uint64; /* used for signed 64bits integers */
+ struct in_addr ipv4; /* used for ipv4 addresses */
+ struct in6_addr ipv6; /* used for ipv6 addresses */
+ struct chunk buffer; /* used for char strings or buffers */
+};
+
+/* Used to store sample constant */
+struct spoe_data {
+ enum spoe_data_type type; /* SPOE_DATA_T_* */
+ union spoe_value u; /* spoe data value */
+};
+
+#endif /* __SPOA_H__ */