On 05/16/2011 04:17 PM, vip killa wrote:

forgive me for i am very new to asterisk and perl. but how could you
 detect if you were disconnected from AMI?

if(defined($mgr_sock)) would evaluate to false. That's all you need to do with the plain vanilla blocking I/O you're using now.

Down the road, if non-blocking I/O is set, there are other strategies. The traditional way was an ioctl() FIONREAD that returned 0 for the bytes value, though the ioctl() call did not fail:

   require 'sys/ioctl.ph';

   ...

   my $bytes_waiting = pack("L", 0);

   ioctl($mgr_sock, FIONREAD(), $bytes_wating);

   $bytes_waiting = unpack("L", $bytes_waiting);

   if($bytes_waiting == 0) {
      # Far-end disconnected.

      close($mgr_sock);
      return;
   }

--
Alex Balashov - Principal
Evariste Systems LLC
260 Peachtree Street NW
Suite 2200
Atlanta, GA 30303
Tel: +1-678-954-0670
Fax: +1-404-961-1892
Web: http://www.evaristesys.com/

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
              http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to