提交 9727efd8 authored 作者: Anthony Minessale's avatar Anthony Minessale

Change the socket protocol and the sample client to use multiline input

valid input:

-------------------------
<command>[ <args>]

-------------------------
or
-------------------------
<command>[ <args>]
Header1: Val
HeaderN: Val

-------------------------





git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2109 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 7bd149c2
...@@ -89,7 +89,7 @@ sub output($$) { ...@@ -89,7 +89,7 @@ sub output($$) {
my ($self,$data) = @_; my ($self,$data) = @_;
my $s = $self->{_sock}; my $s = $self->{_sock};
print $s $data; print $s $data ;
} }
sub cmd($$$) { sub cmd($$$) {
...@@ -97,12 +97,26 @@ sub cmd($$$) { ...@@ -97,12 +97,26 @@ sub cmd($$$) {
my $cmd = shift; my $cmd = shift;
my $to = shift; my $to = shift;
$self->output($cmd); $self->output($cmd->{command});
foreach(keys %{$cmd}) {
next if ($_ eq "command");
$self->output($cmd->{$_});
}
$self->output("\n\n");
my $h = $self->readhash($to); my $h = $self->readhash($to);
$h; $h;
} }
sub disconnect($) {
my $self = shift;
$self->{_sock}->shutdown(2);
$self->{_sock}->close();
undef $self->{_sock};
delete $self->{_sock};
}
sub connect($) { sub connect($) {
my $self = shift; my $self = shift;
...@@ -120,8 +134,7 @@ sub connect($) { ...@@ -120,8 +134,7 @@ sub connect($) {
if ($h->{"content-type"} eq "auth/request") { if ($h->{"content-type"} eq "auth/request") {
my $pass = $self->{"_password"}; my $pass = $self->{"_password"};
$self->output("auth $pass"); $h = $self->cmd({command => "auth $pass"});
$h = $self->readhash(undef);
} }
if ($h->{'reply-text'} =~ "OK") { if ($h->{'reply-text'} =~ "OK") {
......
...@@ -11,21 +11,29 @@ my $OUT = $term->OUT .. \*STDOUT; ...@@ -11,21 +11,29 @@ my $OUT = $term->OUT .. \*STDOUT;
my $log = shift; my $log = shift;
$SIG{CHLD} = sub {$fs->disconnect(); die "done"};
if ($log) { if ($log) {
$pid = fork; $pid = fork;
if (!$pid) { if (!$pid) {
my $fs2 = init FreeSWITCH::Client {-password => $password} or die "Error $@"; my $fs2 = init FreeSWITCH::Client {-password => $password} or die "Error $@";
$fs2->cmd("log $log");
$fs2->cmd({ command => "log $log" });
while (1) { while (1) {
my $reply = $fs2->readhash(undef); my $reply = $fs2->readhash(undef);
if ($reply->{socketerror}) {
die "socket error";
}
if ($reply->{body}) { if ($reply->{body}) {
print $reply->{body} . "\n"; print $reply->{body} . "\n";
} elsif ($reply->{'reply-text'}) { } elsif ($reply->{'reply-text'}) {
print $reply->{'reply-text'} . "\n"; print $reply->{'reply-text'} . "\n";
} }
} }
exit;
} }
} }
...@@ -34,8 +42,11 @@ while ( defined ($_ = $term->readline($prompt)) ) { ...@@ -34,8 +42,11 @@ while ( defined ($_ = $term->readline($prompt)) ) {
my $reply; my $reply;
if ($_) { if ($_) {
my $reply = $fs->cmd("api $_"); my $reply = $fs->cmd({command => "api $_"});
if ($reply->{socketerror}) {
$fs2->disconnect();
die "socket error";
}
if ($reply->{body}) { if ($reply->{body}) {
print $reply->{body}; print $reply->{body};
} elsif ($reply->{'reply-text'}) { } elsif ($reply->{'reply-text'}) {
......
...@@ -543,6 +543,7 @@ typedef enum { ...@@ -543,6 +543,7 @@ typedef enum {
SWITCH_EVENT_SESSION_CRASH - Session Crashed SWITCH_EVENT_SESSION_CRASH - Session Crashed
SWITCH_EVENT_MODULE_LOAD - Module was loaded SWITCH_EVENT_MODULE_LOAD - Module was loaded
SWITCH_EVENT_DTMF - DTMF was sent SWITCH_EVENT_DTMF - DTMF was sent
SWITCH_EVENT_MESSAGE - A Basic Message
SWITCH_EVENT_ALL - All events at once SWITCH_EVENT_ALL - All events at once
</pre> </pre>
...@@ -570,6 +571,7 @@ typedef enum { ...@@ -570,6 +571,7 @@ typedef enum {
SWITCH_EVENT_SESSION_CRASH, SWITCH_EVENT_SESSION_CRASH,
SWITCH_EVENT_MODULE_LOAD, SWITCH_EVENT_MODULE_LOAD,
SWITCH_EVENT_DTMF, SWITCH_EVENT_DTMF,
SWITCH_EVENT_MESSAGE,
SWITCH_EVENT_ALL SWITCH_EVENT_ALL
} switch_event_types_t; } switch_event_types_t;
......
...@@ -112,6 +112,7 @@ static char *EVENT_NAMES[] = { ...@@ -112,6 +112,7 @@ static char *EVENT_NAMES[] = {
"SESSION_CRASH", "SESSION_CRASH",
"MODULE_LOAD", "MODULE_LOAD",
"DTMF", "DTMF",
"MESSAGE",
"ALL" "ALL"
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论