Hi,

Yes, indeed it seems like Co_thread requires the wait and block.  So I
end up using tcp-socket.hh in NOX, following the ssl-test as example.
I have got the thread running.  Also, I have binded and listen to the
socket without an error.  With the code below, I tried a tcp
connection to the server.

  void simulator_server::run()
  {
    VLOG_DBG(lg,"simulator server socket is alive!");  <=== seen

    int error;
    while (true)
    {
      server_sock.accept_wait();
      VLOG_DBG(lg,"accept waited");   <=== seen
      co_block();
      VLOG_DBG(lg,"block done");  <=== not seen!!!!!
      std::auto_ptr<Tcp_socket> new_socket = server_sock.accept(error, true);
      new simulator_connection(new_socket);
    }
    if (error != EAGAIN)
      lg.err("simulator TCP accept: %d",error);
  }

Can someone explain what does co_block do and why I cannot have a
connection accepted?

Thanks.

Regards
KK



However, it seems like

2008/8/28 Ben Pfaff <[EMAIL PROTECTED]>:
> "kk yap" <[EMAIL PROTECTED]> writes:
>
>> I was creating a threaded NOX application (in C/C++).  I used the
>> cooperative thread class provided and has sucessfully spawned a
>> thread.  However, it seems like my thread takes up all the processing.
>>  The new thread basically runs server socket listening for messages,
>> which is tested to be working.  Though the rest of the NOX
>> applications seems to have come to a standstill.
>
> You need to use the cooperative thread functions to wait for
> events.  See include/threads/cooperative.hh, especially
> Co_task::fd_wait() and Co_thread::block().
> --
> Ben Pfaff
> Nicira Networks, Inc.
>

_______________________________________________
nox-dev mailing list
[email protected]
http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org

Reply via email to