UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2021 CESNET, z. s. p. o.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, is permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 *
20 * 3. Neither the name of CESNET nor the names of its contributors may be
21 * used to endorse or promote products derived from this software without
22 * specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
26 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
27 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
28 * EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
34 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
35 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 */
37#include <iostream>
38#include <charconv>
39#include "nat-helper.hpp"
40
41namespace {
42 void printUsage(std::string_view name){
43 std::cout << "Usage: "
44 << name << " [-h/--help] [-p/--port <port>]\n";
45 }
46}
47
48int main(int argc, char **argv){
49 int port = 12558;
50
51 for(int i = 1; i < argc; i++){
52 std::string_view arg(argv[i]);
53 if(arg == "-h" || arg == "--help"){
54 printUsage(argv[0]);
55 return 0;
56 } else if(arg == "-p" || arg == "--port"){
57 if(i + 1 >= argc){
58 std::cerr << "Expected port number\n";
59 printUsage(argv[0]);
60 return 1;
61 }
62 std::string_view portStr(argv[++i]);
63 auto res = std::from_chars(portStr.data(), portStr.data() + portStr.size(), port);
64 if(res.ec != std::errc() || res.ptr == portStr.data()){
65 std::cerr << "Failed to parse port number\n";
66 printUsage(argv[0]);
67 return 1;
68 }
69 } else {
70 std::cerr << "Unknown argument " << arg << std::endl;
71 printUsage(argv[0]);
72 return 1;
73 }
74 }
75
76
77 NatHelper server(port);
78
79 server.run(false);
80
81 return 0;
82}
void run(bool async=true)
const char * name
Definition settings.cpp:193