Starting new with C interface.
This commit is contained in:
		@@ -38,7 +38,8 @@ include_directories(
 | 
			
		||||
	"include/"
 | 
			
		||||
	SYSTEM OPENDHT_INCLUDE_DIRS)
 | 
			
		||||
 | 
			
		||||
set(SRCS)
 | 
			
		||||
set(SRCS
 | 
			
		||||
	src/node.cpp)
 | 
			
		||||
 | 
			
		||||
set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -Wpedantic -Werror -Wfatal-errors -pedantic-errors -fno-elide-constructors")
 | 
			
		||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								include/neocomm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								include/neocomm.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2017 Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
 | 
			
		||||
 * Author: Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Affero General Public License as
 | 
			
		||||
 * published by the Free Software Foundation, either version 3 of the
 | 
			
		||||
 * License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program 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 Affero General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Affero General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Initialize a local DHT node.
 | 
			
		||||
 *
 | 
			
		||||
 * @param port The port for the node to listen on.
 | 
			
		||||
 */
 | 
			
		||||
void NeoComm_init(const unsigned short port);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Deinitialize the local node.
 | 
			
		||||
 */
 | 
			
		||||
void NeoComm_deinit();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief A foreign node to connect to.
 | 
			
		||||
 *
 | 
			
		||||
 * @param address DNS/IP of the node.
 | 
			
		||||
 * @param port Port of the foreign node.
 | 
			
		||||
 */
 | 
			
		||||
void NeoComm_connect(const char *address, const unsigned short port);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Import a list of nodes from a node file and connect to them.
 | 
			
		||||
 *
 | 
			
		||||
 * @param node_file Path to the node list file.
 | 
			
		||||
 *
 | 
			
		||||
 * @return 1 upon success, 0 upon failure. Use NeoComm_get_last_error for a
 | 
			
		||||
 * text version of the error.
 | 
			
		||||
 */
 | 
			
		||||
int NeoComm_import_nodes(const char *node_file);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Export current list of nodes into a file.
 | 
			
		||||
 *
 | 
			
		||||
 * @param node_file path to node list file.
 | 
			
		||||
 *
 | 
			
		||||
 * @return 1 upon success, 0 upon failure. Use NeoComm_get_last_error for a
 | 
			
		||||
 * text version of the error.
 | 
			
		||||
 */
 | 
			
		||||
int NeoComm_export_nodes(const char *node_file);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Get the last error that occurred in text.
 | 
			
		||||
 *
 | 
			
		||||
 * @return A string with the last error occurred.
 | 
			
		||||
 */
 | 
			
		||||
const char *NeoComm_get_last_error();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								src/node.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/node.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2017 Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
 | 
			
		||||
 * Author: Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Affero General Public License as
 | 
			
		||||
 * published by the Free Software Foundation, either version 3 of the
 | 
			
		||||
 * License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program 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 Affero General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Affero General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "neocomm.h"
 | 
			
		||||
 | 
			
		||||
#include <opendht.h>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
static dht::DhtRunner node;
 | 
			
		||||
 | 
			
		||||
void NeoComm_init(const unsigned short port) {
 | 
			
		||||
	node.run(port, dht::crypto::generateIdentity(), true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NeoComm_deinit() {
 | 
			
		||||
	node.join();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NeoComm_connect(const char *address, const unsigned short port) {
 | 
			
		||||
	node.bootstrap(address, std::to_string(port));
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user