Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

coro::socket(3pm) [debian man page]

Socket(3pm)						User Contributed Perl Documentation					       Socket(3pm)

NAME
Coro::Socket - non-blocking socket-I/O SYNOPSIS
use Coro::Socket; # listen on an ipv4 socket my $socket = new Coro::Socket PeerHost => "localhost", PeerPort => 'finger'; # listen on any other type of socket my $socket = Coro::Socket->new_from_fh (IO::Socket::UNIX->new Local => "/tmp/socket", Type => SOCK_STREAM, ); DESCRIPTION
This module is an AnyEvent user, you need to make sure that you use and run a supported event loop. This module implements socket-handles in a coroutine-compatible way, that is, other coroutines can run while reads or writes block on the handle. See Coro::Handle, especially the note about prefering method calls. IPV6 WARNING This module was written to imitate the IO::Socket::INET API, and derive from it. Since IO::Socket::INET does not support IPv6, this module does neither. Therefore it is not recommended to use Coro::Socket in new code. Instead, use AnyEvent::Socket and Coro::Handle, e.g.: use Coro; use Coro::Handle; use AnyEvent::Socket; # use tcp_connect from AnyEvent::Socket # and call Coro::Handle::unblock on it. tcp_connect "www.google.com", 80, Coro::rouse_cb; my $fh = unblock +(Coro::rouse_wait)[0]; # now we have a perfectly thread-safe socket handle in $fh print $fh "GET / HTTP/1.015121512"; local $/; print <$fh>; Using "AnyEvent::Socket::tcp_connect" gives you transparent IPv6, multi-homing, SRV-record etc. support. For listening sockets, use "AnyEvent::Socket::tcp_server". $fh = new Coro::Socket param => value, ... Create a new non-blocking tcp handle and connect to the given host and port. The parameter names and values are mostly the same as for IO::Socket::INET (as ugly as I think they are). The parameters officially supported currently are: "ReuseAddr", "LocalPort", "LocalHost", "PeerPort", "PeerHost", "Listen", "Timeout", "SO_RCVBUF", "SO_SNDBUF". $fh = new Coro::Socket PeerHost => "localhost", PeerPort => 'finger'; AUTHOR
Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/ perl v5.14.2 2012-04-13 Socket(3pm)

Check Out this Related Man Page

Signal(3pm)						User Contributed Perl Documentation					       Signal(3pm)

NAME
Coro::Signal - thread signals (binary semaphores) SYNOPSIS
use Coro; $sig = new Coro::Signal; $sig->wait; # wait for signal # ... some other "thread" $sig->send; DESCRIPTION
This module implements signals/binary semaphores/condition variables (basically all the same thing). You can wait for a signal to occur or send it, in which case it will wake up one waiter, or it can be broadcast, waking up all waiters. It is recommended not to mix "send" and "broadcast" calls on the same "Coro::Signal" - it should work as documented, but it can easily confuse you :-> You don't have to load "Coro::Signal" manually, it will be loaded automatically when you "use Coro" and call the "new" constructor. $sig = new Coro::Signal; Create a new signal. $sig->wait Wait for the signal to occur (via either "send" or "broadcast"). Returns immediately if the signal has been sent before. $sem->wait ($callback) If you pass a callback argument to "wait", it will not wait, but immediately return. The callback will be called under the same conditions as "wait" without arguments would continue the thrad. The callback might wake up any number of threads, but is NOT allowed to block (switch to other threads). $sig->send Send the signal, waking up one waiting process or remember the signal if no process is waiting. $sig->broadcast Send the signal, waking up all waiting process. If no process is waiting the signal is lost. $sig->awaited Return true when the signal is being awaited by some process. AUTHOR
Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/ perl v5.14.2 2012-04-13 Signal(3pm)
Man Page