Theta/main.c

72 lines
No EOL
1.7 KiB
C

#define CRT_SECURE_NO_WARNINGS
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include "modules/peer.h"
#include "modules/webio.h"
#include "modules/config.h"
#include "modules/server.h"
#include "lib/tcp-listener.h"
#pragma comment(lib, "ws2_32.lib")
SOCKET listening;
SOCKET web_sock;
void closeSocks(){
logger_log("Closing socket...");
close(listening);
close(web_sock);
}
int main(void) {
atexit(closeSocks);
Map config = config_load();
Node_data mynode = construct_Mynodedata(config);
logger_log("Initialising core...");
struct addrinfo *result = NULL;
result = tcp_createIPv4Socket(&listening, mynode.port, true);
if (result == NULL) {
return EXIT_FAILURE;
}
int res = tcp_bindnlisten(listening, result, SOMAXCONN);
if (res != 0) {
return EXIT_FAILURE;
}
//Ez alapvetően akkor hasznos amikor a port 0-ra van állítva, azaz akkor amikor a rendszer random választ egyet.
mynode.port = tcp_getSockPort(listening);
logger_log("Started listening on port %d", mynode.port);
fd_set master;
FD_ZERO(&master);
FD_SET(listening, &master);
//Connecting to peers
logger_log("Checking peers.txt for peers...");
PeerList peerList1;
peer_initList(&peerList1);
WebIO webIo;
res = webio_create(config,mynode, &webIo);
if (res != 0) {
return EXIT_FAILURE;
}
FD_SET(webIo.socket, &master);
web_sock = webIo.socket;
logger_log("Started web interface at http://127.0.0.1:%d", tcp_getSockPort(webIo.socket));
peer_loadPeerList(&peerList1,mynode,&master);
logger_log("Starting main loop...");
serverThread(listening,&master,webIo,peerList1,mynode);
free(peerList1.array);
free(config.pairs);
return 0;
}