Example #1
0
void reflective_copy(const Src& s, Dst& d)
{
    holder sh(create_holder(const_cast< Src& >(s)));
    holder dh(create_holder(d));

    reflective_copy(sh, dh);
}
  PyObject* init::do_call(PyObject* args_, PyObject* keywords) const
  {
      tuple args(ref(args_, ref::increment_count));
      if (args[0]->ob_type->ob_type != extension_meta_class())
      {
          PyErr_SetString(PyExc_TypeError, "argument 1 to __init__ must be an ExtensionInstance");
          return 0;
      }

      extension_instance *self = static_cast<extension_instance*>(args[0].get());

      tuple ctor_args = args.slice(1, args.size());

      std::auto_ptr<instance_holder_base> result(
          create_holder(self, ctor_args.get(), keywords));

      self->add_implementation(result);
      return none();
  }
Example #3
0
File: utils.c Project: ivkos/cquiz
void server_start(unsigned short port, int * server_socket_fd, list_node * question_pool, list_node * results)
{
    //region Initialize/declare variables
    struct sockaddr_in server = server_create_sin(port);
    int server_fd = server_create_socket();
    *server_socket_fd = server_fd;
    server_listen(server_fd, &server);

    struct sockaddr_in client_addr;
    int client_socket_fd;
    socklen_t client_socket_len = sizeof(struct sockaddr_in);
    //endregion

    //region Listen and handle connections in new threads
    printf("Listening for connections on port %d...\n", port);

    while ((client_socket_fd = accept(server_fd, (struct sockaddr *) &client_addr, &client_socket_len)))
    {
        client_handler_data_holder * holder = create_holder(client_socket_fd, &client_addr, question_pool, results);

        //region Log connection
        {
            char ip_str[INET_ADDRSTRLEN];
            inet_ntop(AF_INET, &client_addr.sin_addr, ip_str, INET_ADDRSTRLEN);
            printf("Client (%s) connected\n", ip_str);
        }
        //endregion

        pthread_t thread;
        int res = pthread_create(&thread, NULL, handle_connection, holder);

        if (res < 0)
        {
            perror("Could not create client handler thread");
            return;
        }

        pthread_detach(thread);
    }
    //endregion
}