int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  struct mg_bind_opts bind_opts;
  const char *err;

  mg_mgr_init(&mgr, NULL);
  memset(&bind_opts, 0, sizeof(bind_opts));
  bind_opts.ssl_cert = s_ssl_cert;
  bind_opts.ssl_key = s_ssl_key;
  bind_opts.error_string = &err;

  printf("Starting SSL server on port %s, cert from %s, key from %s\n",
         s_http_port, bind_opts.ssl_cert, bind_opts.ssl_key);
  nc = mg_bind_opt(&mgr, s_http_port, ev_handler, bind_opts);
  if (nc == NULL) {
    printf("Failed to create listener: %s\n", err);
    return 1;
  }

  // Set up HTTP server parameters
  mg_set_protocol_http_websocket(nc);
  s_http_server_opts.document_root = ".";  // Serve current directory
  s_http_server_opts.enable_directory_listing = "yes";

  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #2
0
	int server_shutdown(struct mg_mgr& mgr)
	{
		/* Cleanup */
		mg_mgr_free(&mgr);
		
		return 0;
	}
Beispiel #3
0
void tws::mongoose::server::start()
{
    pimpl_->stop_ = false;

    struct mg_mgr server_;
    struct mg_connection* conn_;

    tws_mongoose_http_config conf = tws_mongoose_read_config_file();

    mg_mgr_init(&server_, NULL);

    conn_ = mg_bind(&server_,
                    boost::lexical_cast<std::string>(conf.listening_port).c_str(),
                    tws_mongoose_event_handler);

    mg_set_protocol_http_websocket(conn_);

    if(conf.max_threads > 1)
        mg_enable_multithreading(conn_);
    \

    while(pimpl_->stop_ == false)
    {
        mg_mgr_poll(&server_, 1000);
    }
    mg_mgr_free(&server_);
}
Beispiel #4
0
int main(int argc, char *argv[]) {
  struct mg_mgr mgr;
  int i;

  mg_mgr_init(&mgr, NULL);

  /* Process command line arguments */
  for (i = 1; i < argc; i++) {
    if (strcmp(argv[i], s_show_headers_opt) == 0) {
      s_show_headers = 1;
    } else if (strcmp(argv[i], "--hexdump") == 0 && i + 1 < argc) {
      mgr.hexdump_file = argv[++i];
    } else {
      break;
    }
  }

  if (i + 1 != argc) {
    fprintf(stderr, "Usage: %s [%s] [--hexdump <file>] <URL>\n",
            argv[0], s_show_headers_opt);
    exit(EXIT_FAILURE);
  }

  mg_connect_http(&mgr, ev_handler, argv[i], NULL, NULL);

  while (s_exit_flag == 0) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #5
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc1;
  struct mg_connection *nc2;
  const char *port1 = "127.0.0.1:80", *port2 = "[::1]:80";

  oom_adjust_setup();

  mg_mgr_init(&mgr, NULL);
  nc1 = mg_bind(&mgr, port1, ev_handler);
  nc2 = mg_bind(&mgr, port2, ev_handler);

  mg_set_protocol_http_websocket(nc1);
  mg_set_protocol_http_websocket(nc2);

  signal(SIGINT, signal_handler);
  signal(SIGTERM, signal_handler);

  __android_log_print(ANDROID_LOG_INFO, THIS_FILE, "AdAway Native Webserver: starting");
  while (s_sig_num == 0) {
    mg_mgr_poll(&mgr, 1000);
  }

  mg_mgr_free(&mgr);
  __android_log_print(ANDROID_LOG_INFO, THIS_FILE, "AdAway Native Webserver: exited on signal %d", s_sig_num);
  return EXIT_SUCCESS;
}
Beispiel #6
0
wxThread::ExitCode SendStatsThread::Entry()
{
	std::cout << m_url << std::endl;

	struct mg_mgr mgr;
	struct mg_connection *nc;

	mg_mgr_init(&mgr, this);

	std::string user_agent = "User-Agent: " + wxGetOsDescription().ToStdString() + "\r\n";
	std::cout << user_agent << std::endl;
	nc = mg_connect_http(&mgr, SendStatsThread::ev_handler, m_url.c_str(), user_agent.c_str(), NULL); // GET

    if (nc != nullptr)
    {
	    mg_set_protocol_http_websocket(nc);

	    time_t ts_start = time(NULL);
	    time_t ts_end = ts_start;
	    this->m_end = false;

	    while (!this->m_end)
	    {
		    if ((ts_end - ts_start) >= 1) // 1 sec
		    {
			    std::cout << "timeout" << std::endl;
			    break;
		    }
		    ts_end = mg_mgr_poll(&mgr, 1000);
	    }
    }
	mg_mgr_free(&mgr);

	return nullptr;
}
Beispiel #7
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;

  signal(SIGTERM, signal_handler);
  signal(SIGINT, signal_handler);

  mg_mgr_init(&mgr, 0);

  nc = mg_bind(&mgr, s_default_address, coap_handler);
  if (nc == NULL) {
    printf("Unable to start listener at %s\n", s_default_address);
    return -1;
  }

  printf("Listening for CoAP messages at %s\n", s_default_address);

  mg_set_protocol_coap(nc);

  while (!s_sig_received) {
    mg_mgr_poll(&mgr, 1000000);
  }

  printf("Exiting on signal %d\n", s_sig_received);

  mg_mgr_free(&mgr);
  return 0;
}
int main(int argc, char *argv[])
{
	struct ev_loop *loop = EV_DEFAULT;
	ev_signal sig_watcher;
	struct mg_mgr mgr;

	ev_signal_init(&sig_watcher, signal_cb, SIGINT);
	ev_signal_start(loop, &sig_watcher);
	
	mg_mgr_init(&mgr, NULL, loop);

	/* Process command line arguments */
	if (argc != 2) {
		fprintf(stderr, "Usage: %s <domain>\n", argv[0]);
		exit(0);
	}

	mg_resolve_async(&mgr, argv[1], MG_DNS_A_RECORD, dns_resolve_cb, argv[1]);

	ev_run(loop, 0);

	printf("exit...\n");
	
	mg_mgr_free(&mgr);

	return 0;
}
Beispiel #9
0
int main(int argc, char *argv[]) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  char *address = s_default_address;

  if (argc > 1) {
    address = argv[1];
  }

  printf("Using %s as CoAP server\n", address);

  mg_mgr_init(&mgr, 0);

  nc = mg_connect(&mgr, address, coap_handler);
  if (nc == NULL) {
    printf("Unable to connect to %s\n", address);
    return -1;
  }

  mg_set_protocol_coap(nc);

  while (!s_time_to_exit) {
    mg_mgr_poll(&mgr, 1000000);
  }

  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #10
0
int main(void)
{
  struct mg_mgr mgr;
  struct mg_connection *nc;

  signal(SIGTERM, signal_handler);
  signal(SIGINT, signal_handler);
  setvbuf(stdout, NULL, _IOLBF, 0);
  setvbuf(stderr, NULL, _IOLBF, 0);

  load_source_data();
  mg_mgr_init(&mgr, NULL);

  nc = mg_bind(&mgr, s_http_port, ev_handler);
  s_http_server_opts.document_root = ".";
  s_http_server_opts.enable_directory_listing = "yes";
  mg_set_protocol_http_websocket(nc);

  printf("Started on port %s\n", s_http_port);
  while (s_signal_received == 0)
  {
    mg_mgr_poll(&mgr, 200);
  }

  mg_mgr_free(&mgr);
  save_source_data( s_source_path );

  return 0;
}
int main(int argc, char *argv[]) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  int i;

  mg_mgr_init(&mgr, NULL);
  s_our_ip_addr = inet_addr("127.0.0.1");

  /* Parse command line arguments */
  for (i = 1; i < argc; i++) {
    if (strcmp(argv[i], "-D") == 0) {
      mgr.hexdump_file = argv[++i];
    } else if (strcmp(argv[i], "-l") == 0 && i + 1 < argc) {
      s_listening_addr = argv[++i];
    } else {
      s_our_ip_addr = inet_addr(argv[i]);
    }
  }

  fprintf(stderr, "Listening on '%s'\n", s_listening_addr);
  if ((nc = mg_bind(&mgr, s_listening_addr, ev_handler)) == NULL) {
    fprintf(stderr, "cannot bind to socket\n");
    exit(1);
  }
  mg_set_protocol_dns(nc);

  while (s_exit_flag == 0) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #12
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;

  mkfifo(DSP_FIFO_IN, S_IRUSR | S_IWUSR);
  if (NULL == (dsp_in = fopen(DSP_FIFO_IN, "w"))) {
    perror("[Server] fopen("DSP_FIFO_IN")");
    return 2;
  }

  mkfifo(DSP_FIFO_OUT, S_IRUSR | S_IWUSR);
  if (NULL == (dsp_out = fopen(DSP_FIFO_OUT, "r"))) {
    perror("[Server] fopen("DSP_FIFO_OUT")");
    return 2;
  }

  signal(SIGTERM, signal_handler);
  signal(SIGINT, signal_handler);

  mg_mgr_init(&mgr, NULL);

  nc = mg_bind(&mgr, s_http_port, ev_handler);
  s_http_server_opts.document_root = "htdocs";
  mg_set_protocol_http_websocket(nc);

  printf("[Server] Started on port %s\n", s_http_port);
  while (0 == s_signal_received) {
    mg_mgr_poll(&mgr, 200);
  }
  mg_mgr_free(&mgr);

  fclose(dsp_in);
  fclose(dsp_out);
  return 0;
}
Beispiel #13
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  cs_stat_t st;

  mg_mgr_init(&mgr, NULL);
  nc = mg_bind(&mgr, s_http_port, ev_handler);
  if (nc == NULL) {
    fprintf(stderr, "Cannot bind to %s\n", s_http_port);
    exit(1);
  }

  // Set up HTTP server parameters
  mg_set_protocol_http_websocket(nc);
  s_http_server_opts.document_root = "web_root";  // Set up web root directory

  if (mg_stat(s_http_server_opts.document_root, &st) != 0) {
    fprintf(stderr, "%s", "Cannot find web_root directory, exiting\n");
    exit(1);
  }

  printf("Starting web server on port %s\n", s_http_port);
  for (;;) {
    static time_t last_time;
    time_t now = time(NULL);
    mg_mgr_poll(&mgr, 1000);
    if (now - last_time > 0) {
      push_data_to_all_websocket_connections(&mgr);
      last_time = now;
    }
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #14
0
TestHttpClient::TestHttpClient() 
  : stop_(false) {

  std::atomic_bool is_run(false);

  on_text_ = [](struct mg_connection*, const std::string & text) {};
  on_binary_ = [](struct mg_connection*, const std::vector<uint8_t> & bytes) {};
  on_closed_ = [](struct mg_connection*) {};

  mg_mgr_init(&mgr_, this);

  boost::mutex mutex;
  boost::condition_variable cond;

  boost::thread t([&]() {

      mutex.lock();
      is_run = true;
      cond.notify_one();
      mutex.unlock();

      while(!stop_) {
        mg_mgr_poll(&mgr_, 1000);
      }

      mg_mgr_free(&mgr_);
    });
  thread_.swap(t);

  while (!is_run) {
    const boost::chrono::seconds d(1);
    boost::mutex::scoped_lock lock(mutex);
    cond.wait_for(lock, d);
  }
}
Beispiel #15
0
void *VSCPMQTTBrokerThread::Entry()
{
    struct mg_mgr mgr;
    struct mg_connection *nc;
    struct mg_mqtt_broker brk;
    const char *address = "0.0.0.0:1883";

    // Check pointers
    if ( NULL == m_pCtrlObject ) return NULL;

    // We need to create a clientobject and add this object to the list
    m_pClientItem = new CClientItem;
    if ( NULL == m_pClientItem ) {
        m_pCtrlObject->logMsg( _( "[VSCP MQTT Broker] Unable to allocate memory for client.\n" )  );
        return NULL;
    }

    // This is now an active Client
    m_pClientItem->m_bOpen = true;
    m_pClientItem->m_type =  CLIENT_ITEM_INTERFACE_TYPE_CLIENT_UDP;
    m_pClientItem->m_strDeviceName = _("VSCP MQTT Broker: Started at ");
    wxDateTime now = wxDateTime::Now();
    m_pClientItem->m_strDeviceName += now.FormatISODate();
    m_pClientItem->m_strDeviceName += _(" ");
    m_pClientItem->m_strDeviceName += now.FormatISOTime();

    // Add the client to the Client List
    m_pCtrlObject->m_wxClientMutex.Lock();
    m_pCtrlObject->addClient( m_pClientItem );
    m_pCtrlObject->m_wxClientMutex.Unlock();

    // Clear the filter (Allow everything )
    vscp_clearVSCPFilter( &m_pClientItem->m_filterVSCP );
    mg_mgr_init( &mgr, this );
    mg_mqtt_broker_init( &brk, NULL );

    if ( ( nc = mg_bind( &mgr,
                            m_pCtrlObject->m_strMQTTBrokerInterfaceAddress.mbc_str(),
                            mg_mqtt_broker ) ) == NULL) {
        m_pCtrlObject->logMsg( _("VSCP MQTT Broker: Faild to bind to requested address.\n")  );
        return NULL;
    }

    nc->user_data = &brk;

    m_pCtrlObject->logMsg( _("VSCP MQTT Broker: Thread started.\n")  );

    while ( !TestDestroy() && !m_bQuit ) {
        mg_mgr_poll( &mgr, 1000 );
    }

    // release the server
    //ns_mgr_free( &m_pCtrlObject->m_mgrTcpIpServer );
    mg_mgr_free( &mgr );

    m_pCtrlObject->logMsg( _( "VSCP MQTT Broker: Quit.\n" )  );

    return NULL;
}
Beispiel #16
0
int main(int argc, char* argv[])
{
    if (VIPS_INIT(argv[0])) {
        vips_error_exit("Unable to start VIPS");
    }

    int ret = 0;

    // Initialize and open database
    ret = init_dbfile(argc, argv[1]);

    if (ret == 0) {
        print_header(&db_file->header);

        // Initialize signal handler and kill previous one
        signal(SIGTERM, signal_handler);
        signal(SIGINT, signal_handler);

        struct mg_mgr mgr;
        struct mg_connection* nc;

        // Create listening connection
        mg_mgr_init(&mgr, NULL);
        nc = mg_bind(&mgr, s_http_port, db_event_handler);

        if (nc != NULL) {
            // Set up HTTP server parameters
            mg_set_protocol_http_websocket(nc);
            s_http_server_opts.document_root = "."; // Serve current directory
            s_http_server_opts.enable_directory_listing = "yes";

            // Listening loop
            printf("Starting web server on port %s,\nserving %s\n", s_http_port,
                   s_http_server_opts.document_root);
            while (!s_sig_received) {
                mg_mgr_poll(&mgr, 1000);
            }
            printf("Exiting on signal %d\n", s_sig_received);
        } else {
            fprintf(stderr, "Unable to create web server on port %s\n", s_http_port);
        }

        mg_mgr_free(&mgr);
    }

    // Close database and free the pointer
    do_close(db_file);
    free(db_file);

    // Print error message if there was an error
    if (ret) {
        fprintf(stderr, "ERROR: %s\n", ERROR_MESSAGES[ret]);
    }

    vips_shutdown();

    return ret;
}
Beispiel #17
0
Server::~Server() {
	delete m_apiServer;

	mg_mgr_free(&m_mgr);
	if (m_storage) {
		delete m_storage;
	}
	delete m_storageCfg;
}
Beispiel #18
0
// FreeRTOS task to start Mongoose.
static void mongooseTask(void *data) {
	struct mg_mgr mgr;
	struct mg_connection *connection;

	ESP_LOGD(tag, ">> mongooseTask");
	g_mongooseStopRequest = 0; // Unset the stop request since we are being asked to start.

	mg_mgr_init(&mgr, NULL);

	connection = mg_bind(&mgr, ":80", mongoose_event_handler);

	if (connection == NULL) {
		ESP_LOGE(tag, "No connection from the mg_bind().");
		mg_mgr_free(&mgr);
		ESP_LOGD(tag, "<< mongooseTask");
		vTaskDelete(NULL);
		return;
	}
	mg_set_protocol_http_websocket(connection);

	// Keep processing until we are flagged that there is a stop request.
	while (!g_mongooseStopRequest) {
		mg_mgr_poll(&mgr, 1000);
	}

	// We have received a stop request, so stop being a web server.
	mg_mgr_free(&mgr);
	g_mongooseStarted = 0;

	// Since we HAVE ended mongoose, time to invoke the callback.
	if (g_callback) {
		g_callback(1);
	}

	ESP_LOGD(tag, "<< mongooseTask");
	vTaskDelete(NULL);
	return;
} // mongooseTask
Beispiel #19
0
JNIEXPORT void JNICALL Java_com_zcwfeng_fastdev_ndk_NdkJniUtils_openServer(void) {


    // TODO
    struct mg_mgr mgr;
    struct mg_connection *nc;





    /* Open listening socket */
    mg_mgr_init(&mgr, NULL);
    nc = mg_bind(&mgr, s_http_port, ev_handler);
    mg_set_protocol_http_websocket(nc);
//    s_http_server_opts.document_root = "web_root";

    /* Parse command line arguments */
//    for (i = 1; i < argc; i++) {
//        if (strcmp(argv[i], "-D") == 0) {
//            mgr.hexdump_file = argv[++i];
//        } else if (strcmp(argv[i], "-f") == 0) {
//            s_db_path = argv[++i];
//        } else if (strcmp(argv[i], "-r") == 0) {
//            s_http_server_opts.document_root = argv[++i];
//        }
//    }

    signal(SIGINT, signal_handler);
    signal(SIGTERM, signal_handler);

    /* Open database */
    if ((s_db_handle = db_open(s_db_path)) == NULL) {
        fprintf(stderr, "Cannot open DB [%s]\n", s_db_path);
        exit(EXIT_FAILURE);
    }

    /* Run event loop until signal is received */
    printf("Starting RESTful server on port %s\n", s_http_port);
    while (s_sig_num == 0) {
        mg_mgr_poll(&mgr, 1000);
    }

    /* Cleanup */
    mg_mgr_free(&mgr);
    db_close(&s_db_handle);

    printf("Exiting on signal %d\n", s_sig_num);

}
Beispiel #20
0
wxThread::ExitCode WebServerThread::Entry()
{
    // Get user setting
    int webserverPort = Model_Setting::instance().GetIntSetting("WEBSERVERPORT", 8080);
    const wxString& strPort = wxString::Format("%d", webserverPort);

    // Create and configure the server
    struct mg_mgr mgr;

    mg_mgr_init(&mgr, NULL);
    struct mg_connection* nc = mg_bind(&mgr, strPort.c_str(), ev_handler);
    if (nc == nullptr)
    {
        wxLogDebug(wxString::Format("mg_bind(%s) failed", strPort));
        mg_mgr_free(&mgr);
        return (wxThread::ExitCode)-1;
    }
    
    mg_set_protocol_http_websocket(nc);
    std::string document_root(wxFileName(mmex::getReportIndex()).GetPath().c_str());
    s_http_server_opts.document_root = document_root.c_str();
    s_http_server_opts.enable_directory_listing = "yes";

    wxSetWorkingDirectory(wxString(s_http_server_opts.document_root));

    // Serve requests 
    while (IsAlive())
    {
        mg_mgr_poll(&mgr, 1000);
    }

    // Cleanup, and free server instance
    mg_mgr_free(&mgr);

    return nullptr;
}
Beispiel #21
0
int main(void) {
  struct mg_mgr mgr;
  const char *port1 = "1234", *port2 = "127.0.0.1:17000";

  mg_mgr_init(&mgr, NULL);
  mg_bind(&mgr, port1, ev_handler);
  mg_bind(&mgr, port2, ev_handler);

  printf("Starting echo mgr on ports %s, %s\n", port1, port2);
  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #22
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;

  mg_mgr_init(&mgr, NULL);
  nc = mg_connect_http(&mgr, ev_handler, s_url, NULL, NULL);
  mg_set_protocol_http_websocket(nc);

  printf("Starting RESTful client against %s\n", s_url);
  while (s_exit_flag == 0) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #23
0
// 发送一次请求,并回调处理,然后关闭本次连接
void HttpClient::SendReq(const std::string &url, ReqCallback req_callback)
{
	// 给回调函数赋值
	s_req_callback = req_callback;
	mg_mgr mgr;
	mg_mgr_init(&mgr, NULL);
	auto connection = mg_connect_http(&mgr, OnHttpEvent, url.c_str(), NULL, NULL);
	mg_set_protocol_http_websocket(connection);

	printf("Send http request %s\n", url.c_str());

	// loop
	while (s_exit_flag == 0)
		mg_mgr_poll(&mgr, 500);

	mg_mgr_free(&mgr);
}
Beispiel #24
0
int main(int argc, char *argv[]) {
  struct mg_mgr mgr;

  if (argc != 3) {
    fprintf(stderr, "Usage: %s <port> <client|server>\n", argv[0]);
    exit(EXIT_FAILURE);
  } else if (strcmp(argv[2], "client") == 0) {
    sock_t fds[2];
    struct mg_connection *ioconn, *server_conn;

    mg_mgr_init(&mgr, NULL);

    // Connect to the pubsub server
    server_conn = mg_connect(&mgr, argv[1], client_handler);
    if (server_conn == NULL) {
      fprintf(stderr, "Cannot connect to port %s\n", argv[1]);
      exit(EXIT_FAILURE);
    }
    server_conn->flags |= MG_F_USER_2;  // Mark this as a client connection

    // Create a socketpair and give one end to the thread that reads stdin
    mg_socketpair(fds, SOCK_STREAM);
    mg_start_thread(stdin_thread, &fds[1]);

    // The other end of a pair goes inside the server
    ioconn = mg_add_sock(&mgr, fds[0], client_handler);
    ioconn->flags |= MG_F_USER_1;  // Mark this so we know this is a stdin
    ioconn->user_data = server_conn;

  } else {
    // Server code path
    mg_mgr_init(&mgr, NULL);
    mg_bind(&mgr, argv[1], server_handler);
    printf("Starting pubsub server on port %s\n", argv[1]);
  }

  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return EXIT_SUCCESS;
}
int main(int argc, char **argv) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  const char *chat_server_url = argc > 1 ? argv[1] : "ws://127.0.0.1:8000";

  mg_mgr_init(&mgr, NULL);

  nc = mg_connect_ws(&mgr, ev_handler, chat_server_url, "ws_chat", NULL);
  if (nc == NULL) {
    fprintf(stderr, "Invalid address\n");
    return 1;
  }

  while (!s_done) {
    mg_mgr_poll(&mgr, 100);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #26
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;

  mg_mgr_init(&mgr, NULL);
  nc = mg_bind(&mgr, s_http_port, ev_handler);

  // Set up HTTP server parameters
  mg_set_protocol_http_websocket(nc);
  s_http_server_opts.document_root = ".";  // Serve current directory
  s_http_server_opts.enable_directory_listing = "yes";

  printf("Starting web server on port %s\n", s_http_port);
  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #27
0
void imcs_thread() {
	{
		mg_mgr_init(imcs_mgmgrHandle, NULL);
	}
	
	{
		imcs_mgconnectionHandle = mg_connect(imcs_mgmgrHandle, imcs_charServer, imcs_handler);
	}
	
	{
		do {
			mg_mgr_poll(imcs_mgmgrHandle, 1000);
		} while (pthread_mutex_trylock(&imcs_pthreadmutexRunning) != 0);
		
		pthread_mutex_unlock(&imcs_pthreadmutexRunning);
	}
	
	{
		mg_mgr_free(imcs_mgmgrHandle);
	}
}
Beispiel #28
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;
  srand(mg_time());

  mg_mgr_init(&mgr, NULL);
  nc = mg_bind(&mgr, s_http_port, ev_handler);

  mg_set_protocol_http_websocket(nc);
  s_http_server_opts.document_root = ".";
  mg_register_http_endpoint(nc, "/login.html", login_handler);
  mg_register_http_endpoint(nc, "/logout", logout_handler);
  mg_set_timer(nc, mg_time() + SESSION_CHECK_INTERVAL);

  printf("Starting web server on port %s\n", s_http_port);
  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}
Beispiel #29
0
int main(int argc, char **argv) {
  signal(SIGINT, signal_handler);

  if (sqlite3_open("tpod.db", &db) != SQLITE_OK) {
    printf("failed to open database: %s\n", sqlite3_errmsg(db));
    cleanup();
    return 1;
  }

  mpg123_init();

  ao_initialize();

  if (strcmp("-s", argv[1]) == 0) {
    struct mg_mgr mgr;
    struct mg_connection *con;

    mg_mgr_init(&mgr, NULL);
    con = mg_bind(&mgr, "8080", ev_handler);
    mg_set_protocol_http_websocket(con);
    mg_enable_multithreading(con);
    s_http_server_opts.document_root = "./static";

    while (srv) {
      mg_mgr_poll(&mgr, 1000);
    }

    mg_mgr_free(&mgr);
    cleanup();

    exit(130);
  } else {
    mode = 1;
    play_stream(argv[1]);
    cleanup();
  }

  return 0;
}
Beispiel #30
0
int main(void) {
  struct mg_mgr mgr;
  struct mg_connection *nc;

  signal(SIGTERM, signal_handler);
  signal(SIGINT, signal_handler);
  setvbuf(stdout, NULL, _IOLBF, 0);
  setvbuf(stderr, NULL, _IOLBF, 0);

  mg_mgr_init(&mgr, NULL);

  nc = mg_bind(&mgr, s_http_port, ev_handler);
  mg_set_protocol_http_websocket(nc);

  printf("Started on port %s\n", s_http_port);
  while (s_signal_received == 0) {
    mg_mgr_poll(&mgr, 200);
  }
  mg_mgr_free(&mgr);

  return 0;
}