There is some C implementations of ESL stuff on my contrib dir as well if anyone is interested...

Also, FSGui is all ESL with Qt and can also be found on my contrib dir.

Regards,
João Mesquita



On Fri, Feb 18, 2011 at 10:27 PM, Michael Collins <msc@freeswitch.org> wrote:
We appreciate you sharing! Feel free to add this to the wiki as well.
-MC

On Fri, Feb 18, 2011 at 8:25 AM, Stephen Wilde <wstephen80@gmail.com> wrote:
I'm learning to use ESL in C++ to do a call control and I want to share my code with the community.

I had a little difficult at startup so I hope that this code can help someone.


Using "esl_oop" module, I have implemented a basic ESL Channel class (that can be extended) so the "main" event handling loop can be very simple, for example for an unuseful esl bridge application, can be:

    ESLchannel legA(&connection, inbound_uuid);

    ESLchannel legB(&connection);
    legB.Originate(dialstring)

    while (1)
    {
        ESLevent * event = connection.recvEventTimed(1000);

        if (event)
        {
            const char * ename = event->getHeader("Event-Name");
            const char * event_uuid = event->getHeader("unique-id");

            // It's an event for LegB ?
            //-------------------------
            if (legB.Uuid() == event_uuid)
            {
                if (!strcmp(ename, "CHANNEL_PROGRESS_MEDIA"))
                {
                    legA.PreAnswer();
                    legA.BridgeTo(legB);
                }
                else if (!strcmp(ename, "CHANNEL_ANSWER"))
                {
                    legA.Answer();
                    legA.BridgeTo(legB);
                }
                else if (!strcmp(ename,"CHANNEL_HANGUP"))
                {
                    const char * cause = event->getHeader("Hangup-Cause");

                    legA.Hangup(cause);
                }
            }
            // It's an event for LegA ?
            //-------------------------
            else if (legA.Uuid() == event_uuid)
            {
                if (!strcmp(ename,"CHANNEL_HANGUP"))
                {
                    const char * cause = event->getHeader("Hangup-Cause");

                    legB.Hangup(cause);
                }
            }

            delete event;
        }
    }

_______________________________________________
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



_______________________________________________
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