nuclear@1: #include nuclear@1: #include nuclear@1: #include nuclear@1: #include nuclear@1: #include nuclear@1: #include "main.h" nuclear@0: #include "mainwin.h" nuclear@1: #include "roll.h" nuclear@1: #include "logger.h" nuclear@1: nuclear@1: static void new_client(); nuclear@1: static void status_log(const char *msg, void *cls); nuclear@1: nuclear@1: std::vector dice; nuclear@1: QTcpServer *server; nuclear@1: std::vector clients; nuclear@1: nuclear@1: QTcpSocket *socket; nuclear@1: nuclear@1: static std::string srv_passwd; nuclear@1: static MainWindow win_main; nuclear@0: nuclear@0: int main(int argc, char *argv[]) nuclear@0: { nuclear@1: srand(time(0)); nuclear@0: nuclear@1: QApplication app(argc, argv); nuclear@1: win_main.show(); nuclear@1: nuclear@1: set_log_file(stdout); nuclear@1: set_log_callback(status_log, win_main.statusBar()); nuclear@1: nuclear@1: return app.exec(); nuclear@0: } nuclear@1: nuclear@1: nuclear@1: void start_server(int port, const char *passwd) nuclear@1: { nuclear@1: if(server) return; nuclear@1: nuclear@1: log_message("starting server on port: %d\n", port); nuclear@1: nuclear@1: server = new QTcpServer; nuclear@1: server->listen(QHostAddress::Any, port); nuclear@1: srv_passwd = passwd; nuclear@1: nuclear@1: QObject::connect(server, &QTcpServer::newConnection, new_client); nuclear@1: } nuclear@1: nuclear@1: nuclear@1: static void new_client() nuclear@1: { nuclear@1: QTcpSocket *sock = server->nextPendingConnection(); nuclear@1: if(!sock) return; nuclear@1: nuclear@1: QHostAddress client_addr = sock->peerAddress(); nuclear@1: clients.push_back(sock); nuclear@1: nuclear@1: log_message("received connection request from: %s\n", client_addr.toString().toUtf8().data()); nuclear@1: } nuclear@1: nuclear@1: void connect(const char *host, int port, const char *passwd) nuclear@1: { nuclear@1: log_message("connecting to host: %s port: %d\n", host, port); nuclear@1: } nuclear@1: nuclear@1: nuclear@1: static void status_log(const char *msg, void *cls) nuclear@1: { nuclear@1: QStatusBar *sbar = (QStatusBar*)cls; nuclear@1: sbar->showMessage(msg); nuclear@1: }