is there any other method than esl to controll calls on FS from an eternal application?
will mod_curl or mod_xml_curl get better performance?
T.
Hi Anthony, thanks for your response ...
this is what i have:
esl_filter(&handle, "unique-id", esl_event_get_header(handle.info_event, "caller-unique-id"));
esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "CHANNEL_DATA CHANNEL_EXECUTE_COMPLETE CHANNEL_HANGUP");
what do you suggest i put there ?
is the inbound method less costly ?
I modified testserver.c just a bit...
#include <sys/types.h> /* include this before any other sys headers */
#include <sys/wait.h> /* header for waitpid() and various macros */
#include <signal.h> /* header for signal functions */
#include <stdio.h> /* header for fprintf() */
#include <unistd.h> /* header for fork() */
#include <stdlib.h>
#include <esl.h>
void sig_chld(int); /* prototype for our SIGCHLD handler */
static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr)
{
esl_handle_t handle = {{0}};
int done = 0;
esl_status_t status;
time_t exp = 0;
if (fork() != 0) {
close(client_sock);
return;
}
esl_attach_handle(&handle, client_sock, addr);
esl_log(ESL_LOG_INFO, "Connected! %d\n", handle.sock);
esl_filter(&handle, "unique-id", esl_event_get_header(handle.info_event, "caller-unique-id"));
esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "CHANNEL_DATA CHANNEL_EXECUTE_COMPLETE CHANNEL_HANGUP");
esl_send_recv(&handle, "linger");
esl_execute(&handle, "answer", NULL, NULL);
//esl_execute(&handle, "conference", "3000@default", NULL);
esl_execute(&handle, "playback", "/home/tculjaga/myWavFile.wav", NULL);
//esl_execute(&handle, "sleep", "1000", NULL);
//esl_execute(&handle, "hangup", NULL, NULL);
while((status = esl_recv_timed(&handle, 1000)) != ESL_FAIL) {
if (done) {
if (time(NULL) >= exp) {
break;
}
} else if (status == ESL_SUCCESS) {
const char *type = esl_event_get_header(handle.last_event, "content-type");
if (type && !strcasecmp(type, "text/disconnect-notice")) {
const char *dispo = esl_event_get_header(handle.last_event, "content-disposition");
esl_log(ESL_LOG_INFO, "Got a disconnection notice dispostion: [%s]\n", dispo ? dispo : "");
if (!strcmp(dispo, "linger")) {
done = 1;
esl_log(ESL_LOG_INFO, "Waiting 5 seconds for any remaining events.\n");
exp = time(NULL) + 5;
}
}
}
}
esl_log(ESL_LOG_INFO, "Disconnected! %d\n", handle.sock);
esl_disconnect(&handle);
close(client_sock);
_exit(0);
}
/*
* The signal handler function -- only gets called when a SIGCHLD
* is received, ie when a child terminates
*/
void sig_chld(int signo)
{
int status;
/* Wait for any child without blocking */
if (waitpid(-1, &status, WNOHANG) < 0)
{
/*
* calling standard I/O functions like fprintf() in a
* signal handler is not recommended, but probably OK
* in toy programs like this one.
*/
fprintf(stderr, "waitpid failed\n");
return;
}
}
int main(void)
{
struct sigaction act;
/* Assign sig_chld as our SIGCHLD handler */
act.sa_handler = sig_chld;
/* We don't want to block any other signals in this example */
sigemptyset(&act.sa_mask);
/*
* We're only interested in children that have terminated, not ones
* which have been stopped (eg user pressing control-Z at terminal)
*/
act.sa_flags = SA_NOCLDSTOP;
/*
* Make these values effective. If we were writing a real
* application, we would probably save the old value instead of
* passing NULL.
*/
/* if (sigaction(SIGCHLD, &act, NULL) < 0)
{
fprintf(stderr, "sigaction failed\n");
return 1;
}
*/
signal(SIGCHLD, SIG_IGN);
esl_global_set_default_logger(0);
esl_listen("localhost", 8088, mycallback);
return 0;
}On Thu, Aug 11, 2011 at 9:59 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
try removing the filter and event subscriptions
it's costly to consume all of the events especially at 75cps.
> _______________________________________________
On Thu, Aug 11, 2011 at 5:23 AM, Tihomir Culjaga <tculjaga@gmail.com> wrote:
> hello,
>
> im wondering how much performance do we loose when using ESL instead of
> running it via dialplan?
>
>
> without ESL with a fine tuned FS and a short dialplan ( answer, playback
> like 20 seconds file, hangup ) im able to service 75 CPS. On the same FS,
> when i use ESL to answer the call, playback the same file and hangup, im not
> able to run more than 2 CPS... this is a huge impact and i really can't
> believe it.
>
> I'm using event-socket outbound e.g.:
>
> <action application="socket" data="127.0.0.1:8088 async full"/>
>
> my extension looks like:
>
> <extension name="ESL_C">
> <condition field="destination_number" expression="^(6666)$">
> <action application="socket" data="127.0.0.1:8088 async full"/>
> <action application="sleep" data="1000"/>
> <action application="hangup"/>
> </condition>
> </extension>
>
>
> im using testserver from lib/esl/ and i just removed the conference command
> and added the playback one.... also i moved the esl_debug lvl to 0
>
>
> anyhow, FS cannot run more than 2 CPS compared to 75 CPS when the playback
> is done from the dialplan.
>
>
> Please, can someone give me a clue on what is going on?
> Maybe im doing something wrong?
> how to get maximum FS performance using ESL ?
>
>
>
> Regards,
> Tihomir.
>
>
> Join us at ClueCon 2011, Aug 9-11, Chicago
> http://www.cluecon.com 877-7-4ACLUE
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users@lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
--
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm
MSN:anthony_minessale@hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com
IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference
sip:888@conference.freeswitch.org
googletalk:conf+888@conference.freeswitch.org
pstn:+19193869900
_______________________________________________
Join us at ClueCon 2011, Aug 9-11, Chicago
http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org