This is how we do it in perl with ESL... it should be very similar in Ruby. You shouldn't have to manually use sendmsg if you tie the fd from the socket to ESL like we do in perl.

/b


require ESL;
use IO::Socket::INET;

my $ip = "127.0.0.1";
my $sock = new IO::Socket::INET ( LocalHost => $ip,  LocalPort => '8040',  Proto => 'tcp',  Listen => 1,  Reuse => 1 );
die "Could not create socket: $!\n" unless $sock;

for(;;) {
  my $new_sock = $sock->accept();
  my $pid = fork();
  if ($pid) {
    close($new_sock);
    next;
  }

  my $host = $new_sock->sockhost();
  my $fd = fileno($new_sock);
  
  my $con = new ESL::ESLconnection($fd);
  my $info = $con->getInfo();

  print $info->serialize();

  my $uuid = $info->getHeader("unique-id");

  $con->execute("answer", "", $uuid);
  $con->execute("playback", "/ram/swimp.raw", $uuid);

  close($new_sock);
}



On May 3, 2009, at 4:00 PM, Diego Viola wrote:

Yep, it works Guido.

require 'socket'

server = TCPServer.new(8084)
loop do
       con = server.accept
       con.puts "connect\n\n"
       con.puts "sendmsg\ncall-command: execute\nexecute-app-name: answer\n\n"
       con.puts "sendmsg\ncall-command: execute\nexecute-app-name:
playback\nexecute-app-arg: tone_stream://%(10000,0,350,440)\n\n"
end

Thanks for the tip =D

-- Meet us at ClueCon!  http://www.cluecon.com