--- /dev/null
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = "UDPConnection"
+PROJECT_NUMBER =
+PROJECT_BRIEF = "A network connection implementation over UDP"
+PROJECT_LOGO =
+OUTPUT_DIRECTORY = "doxygen_out/"
+CREATE_SUBDIRS = NO
+ALLOW_UNICODE_NAMES = NO
+OUTPUT_LANGUAGE = English
+OUTPUT_TEXT_DIRECTION = None
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = YES
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+JAVADOC_BANNER = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 4
+ALIASES =
+TCL_SUBST =
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+OPTIMIZE_OUTPUT_SLICE = NO
+EXTENSION_MAPPING =
+MARKDOWN_SUPPORT = YES
+TOC_INCLUDE_HEADINGS = 5
+AUTOLINK_SUPPORT = YES
+BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+IDL_PROPERTY_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = NO
+GROUP_NESTED_COMPOUNDS = NO
+SUBGROUPING = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS = NO
+TYPEDEF_HIDES_STRUCT = NO
+LOOKUP_CACHE_SIZE = 0
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_PRIV_VIRTUAL = NO
+EXTRACT_PACKAGE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = NO
+EXTRACT_ANON_NSPACES = NO
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+HIDE_COMPOUND_REFERENCE= NO
+SHOW_INCLUDE_FILES = YES
+SHOW_GROUPED_MEMB_INC = NO
+FORCE_LOCAL_INCLUDES = NO
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+SORT_BRIEF_DOCS = NO
+SORT_MEMBERS_CTORS_1ST = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+STRICT_PROTO_MATCHING = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_FILES = YES
+SHOW_NAMESPACES = YES
+FILE_VERSION_FILTER =
+LAYOUT_FILE =
+CITE_BIB_FILES =
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_AS_ERROR = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+INPUT = "src/UDPConnection.h"
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.pyw \
+ *.f90 \
+ *.f95 \
+ *.f03 \
+ *.f08 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.ice
+RECURSIVE = NO
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = NO
+REFERENCES_LINK_SOURCE = YES
+SOURCE_TOOLTIPS = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_FILES =
+HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_GAMMA = 80
+HTML_TIMESTAMP = NO
+HTML_DYNAMIC_MENUS = YES
+HTML_DYNAMIC_SECTIONS = NO
+HTML_INDEX_NUM_ENTRIES = 100
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME = Publisher
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+CHM_INDEX_ENCODING =
+BINARY_TOC = NO
+TOC_EXPAND = NO
+GENERATE_QHP = NO
+QCH_FILE =
+QHP_NAMESPACE = org.doxygen.Project
+QHP_VIRTUAL_FOLDER = doc
+QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
+QHG_LOCATION =
+GENERATE_ECLIPSEHELP = NO
+ECLIPSE_DOC_ID = org.doxygen.Project
+DISABLE_INDEX = NO
+GENERATE_TREEVIEW = NO
+ENUM_VALUES_PER_LINE = 4
+TREEVIEW_WIDTH = 250
+EXT_LINKS_IN_WINDOW = NO
+FORMULA_FONTSIZE = 10
+FORMULA_TRANSPARENT = YES
+USE_MATHJAX = NO
+MATHJAX_FORMAT = HTML-CSS
+MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
+MATHJAX_EXTENSIONS =
+MATHJAX_CODEFILE =
+SEARCHENGINE = YES
+SERVER_BASED_SEARCH = NO
+EXTERNAL_SEARCH = NO
+SEARCHENGINE_URL =
+SEARCHDATA_FILE = searchdata.xml
+EXTERNAL_SEARCH_ID =
+EXTRA_SEARCH_MAPPINGS =
+GENERATE_LATEX = YES
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME =
+MAKEINDEX_CMD_NAME = makeindex
+LATEX_MAKEINDEX_CMD = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4
+EXTRA_PACKAGES =
+LATEX_HEADER =
+LATEX_FOOTER =
+LATEX_EXTRA_STYLESHEET =
+LATEX_EXTRA_FILES =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+LATEX_SOURCE_CODE = NO
+LATEX_BIB_STYLE = plain
+LATEX_TIMESTAMP = NO
+LATEX_EMOJI_DIRECTORY =
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+RTF_SOURCE_CODE = NO
+GENERATE_MAN = YES
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_SUBDIR =
+MAN_LINKS = NO
+GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_PROGRAMLISTING = YES
+XML_NS_MEMB_FILE_SCOPE = NO
+GENERATE_DOCBOOK = NO
+DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
+GENERATE_AUTOGEN_DEF = NO
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+EXTERNAL_PAGES = YES
+CLASS_DIAGRAMS = YES
+DIA_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+DOT_NUM_THREADS = 0
+DOT_FONTNAME = Helvetica
+DOT_FONTSIZE = 10
+DOT_FONTPATH =
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+UML_LIMIT_NUM_FIELDS = 10
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+INTERACTIVE_SVG = NO
+DOT_PATH =
+DOTFILE_DIRS =
+MSCFILE_DIRS =
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
+PLANTUML_CFG_FILE =
+PLANTUML_INCLUDE_PATH =
+DOT_GRAPH_MAX_NODES = 50
+MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+/*!
+ * \mainpage UDPConnection
+ * \ref UDPConnection.h
+ */
+
+/*!
+ * \file UDPConnection.h
+ * \brief Public API for UDPConnection
+ */
+
#ifndef UDPC_CONNECTION_H
#define UDPC_CONNECTION_H
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
// Determine platform macros
-#define UDPC_PLATFORM_WINDOWS 1
-#define UDPC_PLATFORM_MAC 2
-#define UDPC_PLATFORM_LINUX 3
-#define UDPC_PLATFORM_UNKNOWN 0
-
-#if defined _WIN32
-#define UDPC_PLATFORM UDPC_PLATFORM_WINDOWS
-#elif defined __APPLE__
-#define UDPC_PLATFORM UDPC_PLATFORM_MAC
-#elif defined __linux__
-#define UDPC_PLATFORM UDPC_PLATFORM_LINUX
-#else
-#define UDPC_PLATFORM UDPC_PLATFORM_UNKNOWN
-#endif
+# define UDPC_PLATFORM_WINDOWS 1
+# define UDPC_PLATFORM_MAC 2
+# define UDPC_PLATFORM_LINUX 3
+# define UDPC_PLATFORM_UNKNOWN 0
+
+# if defined _WIN32
+# define UDPC_PLATFORM UDPC_PLATFORM_WINDOWS
+# elif defined __APPLE__
+# define UDPC_PLATFORM UDPC_PLATFORM_MAC
+# elif defined __linux__
+# define UDPC_PLATFORM UDPC_PLATFORM_LINUX
+# else
+# define UDPC_PLATFORM UDPC_PLATFORM_UNKNOWN
+# endif
+
+#endif // DOXYGEN_SHOULD_SKIP_THIS
// OS-based networking macros
#if UDPC_PLATFORM == UDPC_PLATFORM_WINDOWS
-#include <winsock2.h>
+# include <winsock2.h>
# ifdef UDPC_PLATFORM_MINGW
# include <ws2ipdef.h>
# include <in6addr.h>
# include <In6addr.h>
# endif
-#define UDPC_CLEANUPSOCKET(x) closesocket(x)
-#define UDPC_SOCKETTYPE SOCKET
-#define UDPC_IPV6_SOCKADDR_TYPE SOCKADDR_IN6
-#define UDPC_IPV6_ADDR_TYPE IN6_ADDR
-#define UDPC_IPV6_ADDR_SUB(addr) addr.u.Byte
-#define UDPC_SOCKET_RETURN_ERROR(socket) (socket == INVALID_SOCKET)
+# ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+# define UDPC_CLEANUPSOCKET(x) closesocket(x)
+# define UDPC_SOCKETTYPE SOCKET
+# define UDPC_IPV6_SOCKADDR_TYPE SOCKADDR_IN6
+# define UDPC_IPV6_ADDR_TYPE IN6_ADDR
+# define UDPC_IPV6_ADDR_SUB(addr) addr.u.Byte
+# define UDPC_SOCKET_RETURN_ERROR(socket) (socket == INVALID_SOCKET)
+
+# endif // DOXYGEN_SHOULD_SKIP_THIS
+
#elif UDPC_PLATFORM == UDPC_PLATFORM_MAC || UDPC_PLATFORM == UDPC_PLATFORM_LINUX
-#include <fcntl.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <unistd.h>
-
-#define UDPC_CLEANUPSOCKET(x) close(x)
-#define UDPC_SOCKETTYPE int
-#define UDPC_IPV6_SOCKADDR_TYPE struct sockaddr_in6
-#define UDPC_IPV6_ADDR_TYPE struct in6_addr
-#define UDPC_IPV6_ADDR_SUB(addr) addr.s6_addr
-#define UDPC_SOCKET_RETURN_ERROR(socket) (socket <= 0)
+# include <fcntl.h>
+# include <netinet/in.h>
+# include <sys/socket.h>
+# include <unistd.h>
+
+# ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+# define UDPC_CLEANUPSOCKET(x) close(x)
+# define UDPC_SOCKETTYPE int
+# define UDPC_IPV6_SOCKADDR_TYPE struct sockaddr_in6
+# define UDPC_IPV6_ADDR_TYPE struct in6_addr
+# define UDPC_IPV6_ADDR_SUB(addr) addr.s6_addr
+# define UDPC_SOCKET_RETURN_ERROR(socket) (socket <= 0)
+
+# endif // DOXYGEN_SHOULD_SKIP_THIS
+
#else
-#define UDPC_CLEANUPSOCKET(x) ((void)0)
+# ifndef DOXYGEN_SHOULD_SKIP_THIS
+# define UDPC_CLEANUPSOCKET(x) ((void)0)
+# endif // DOXYGEN_SHOULD_SKIP_THIS
#endif
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
// other defines
-#define UDPC_PACKET_MAX_SIZE 8192
-#define UDPC_DEFAULT_PROTOCOL_ID 1357924680 // 0x50f04948
+# define UDPC_PACKET_MAX_SIZE 8192
+# define UDPC_DEFAULT_PROTOCOL_ID 1357924680 // 0x50f04948
-#ifndef UDPC_LIBSODIUM_ENABLED
-# define crypto_sign_PUBLICKEYBYTES 1
-# define crypto_sign_SECRETKEYBYTES 1
-# define crypto_sign_BYTES 1
-#endif
+# ifndef UDPC_LIBSODIUM_ENABLED
+# define crypto_sign_PUBLICKEYBYTES 1
+# define crypto_sign_SECRETKEYBYTES 1
+# define crypto_sign_BYTES 1
+# endif
+
+#endif // DOXYGEN_SHOULD_SKIP_THIS
#ifdef __cplusplus
-#include <cstdint>
+# include <cstdint>
extern "C" {
#else
-#include <stdint.h>
+# include <stdint.h>
#endif
-// Opaque struct handle to Context
+/// Opaque struct handle to Context
struct UDPC_Context;
typedef struct UDPC_Context *UDPC_HContext;
* 0x8 - resending
*/
uint32_t flags;
- uint16_t dataSize; // zero if invalid
+ uint16_t dataSize; /// zero if invalid
UDPC_ConnectionId sender;
UDPC_ConnectionId receiver;
} UDPC_PacketInfo;
*/
UDPC_ConnectionId UDPC_create_id_easy(const char *addrString, uint16_t port);
+/*!
+ * \brief Creates an UDPC_HContext that holds state for connections
+ *
+ * \param listenId The addr and port to listen on (contained in a
+ * UDPC_ConnectionId)
+ * \param isClient Whether or not this instance is a client or a server
+ * \param isUsingLibsodium Set to non-zero if libsodium verification of packets
+ * should be enabled (fails if libsodium support was not compiled)
+ *
+ * The received UDPC_HContext must be freed with a call to UDPC_destroy().
+ */
UDPC_HContext UDPC_init(UDPC_ConnectionId listenId, int isClient, int isUsingLibsodium);
UDPC_HContext UDPC_init_threaded_update(
UDPC_ConnectionId listenId,