agent.cxx
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:8k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /* ====================================================================
  2.  * The Vovida Software License, Version 1.0 
  3.  * 
  4.  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  5.  * 
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in
  15.  *    the documentation and/or other materials provided with the
  16.  *    distribution.
  17.  * 
  18.  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
  19.  *    and "Vovida Open Communication Application Library (VOCAL)" must
  20.  *    not be used to endorse or promote products derived from this
  21.  *    software without prior written permission. For written
  22.  *    permission, please contact vocal@vovida.org.
  23.  *
  24.  * 4. Products derived from this software may not be called "VOCAL", nor
  25.  *    may "VOCAL" appear in their name, without prior written
  26.  *    permission of Vovida Networks, Inc.
  27.  * 
  28.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  29.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  30.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  31.  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  32.  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  33.  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  34.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  35.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  36.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  37.  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  39.  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  40.  * DAMAGE.
  41.  * 
  42.  * ====================================================================
  43.  * 
  44.  * This software consists of voluntary contributions made by Vovida
  45.  * Networks, Inc. and many individuals on behalf of Vovida Networks,
  46.  * Inc.  For more information on Vovida Networks, Inc., please see
  47.  * <http://www.vovida.org/>.
  48.  *
  49.  */
  50. // $Id: agent.cxx,v 1.4 2001/05/13 10:54:01 icahoon Exp $
  51. #include <sys/time.h>
  52. #include <sys/resource.h>
  53. #include <unistd.h>
  54. #include "mgc.hxx"
  55. #if 0
  56. char* getHost()
  57. {
  58.     static char buf[256];
  59.     gethostname(buf, 256);
  60.     return buf;
  61. }
  62. void waitForAck(UdpReceiver& receiver)
  63. {
  64.     UdpPacket* data = 0;
  65.     MgcpCommand* test_item;
  66.     bool gotResponse(false);
  67.     while (!gotResponse)
  68.     {
  69.         data = receiver.receive();
  70.         test_item = parseMessage(data->getMessageLocation(), 0);
  71.         if (dynamic_cast < MgcpResponse* > (test_item) != NULL)
  72.         {
  73.             // this is not a proper response
  74.             gotResponse = true;
  75.         }
  76.         free (test_item);
  77.         free (data);
  78.     }
  79. }
  80. #endif
  81. int main()
  82. {
  83. #if 0
  84.     UdpReceiver server(5010);
  85.     CreateConnection test;
  86. #endif
  87.     MgcEndpointConfiguration config ("testID", MgcpBearerInformation());
  88. #if 0
  89.     EndpointId id("testID");
  90.     BearerInformation bearer;
  91.     Entity myself("callagent@foo.bar.com");
  92.     EndpointConfiguration msg0(id, bearer);
  93.     EndpointConfiguration msg1(id, bearer);
  94.     EndpointConfiguration msg2(id, bearer);
  95.     EndpointConfiguration msg3(id, bearer);
  96.     EndpointConfiguration msg4(id, bearer);
  97.     EndpointConfiguration msg5(id, bearer);
  98. #endif
  99.     MgcNotificationRequest request ("testID", "215781728");
  100.     request.addRequestedEvents(MgcRequestEvent());
  101.     request.addRequestedEvents(MgcRequestEvent());
  102.     request.addRequestedEvents(MgcRequestEvent());
  103.     request.addRequestedEvents(MgcRequestEvent());
  104.     request.addRequestedEvents(MgcRequestEvent());
  105. #if 0
  106.     NotificationRequest msg6(id);
  107.     LineEventOffHook offHook;
  108.     LineEventOnHook onHook;
  109.     LineEventHookFlash hookFlash;
  110.     RequestedEvents events6;
  111.     DigitMap temp("[0-9]");
  112.     events6.insert(offHook);
  113.     SignalRequests signals_6;
  114.     SignalRingback ringback;
  115.     SignalRing ring;
  116.     signals_6.insert(ring);
  117.     signals_6.insert(ringback);
  118.     msg6.insert(&myself);
  119.     msg6.insert(&temp);
  120.     msg6.insert(&events6);
  121.     msg6.insert(&signals_6);
  122.     cout << msg6;
  123.     NotificationRequest msg7(id);
  124.     msg7.insert(&myself);
  125.     msg7.insert(&temp);
  126.     RequestedEvents events7;
  127.     events7.insert(offHook);
  128.     events7.insert(onHook);
  129.     events7.insert(hookFlash);
  130.     msg7.insert(&events7);
  131.     // message 8
  132.     Notify msg8(id);
  133.     msg8.insert(&myself);
  134.     //    msg8.insert(&temp);
  135.     ObservedEvents events8;
  136.     events8.insert(offHook);
  137.     events8.insert(onHook);
  138.     events8.insert(hookFlash);
  139.     msg8.insert(&events8);
  140.     //    cerr << events;
  141.     msg6.printData(cout);
  142.     MgcpTransmitter gateway("localhost");
  143.     EndpointConfiguration* test2;
  144.     test2 = new EndpointConfiguration;
  145.     delete (test2);
  146.     msg0.send(gateway);
  147.     waitForAck(server);
  148.     msg1.send(gateway);
  149.     waitForAck(server);
  150.     msg1.send(gateway);
  151.     waitForAck(server);
  152.     msg1.send(gateway);
  153.     waitForAck(server);
  154.     msg1.send(gateway);
  155.     waitForAck(server);
  156.     msg1.send(gateway);
  157.     waitForAck(server);
  158.     msg2.send(gateway);
  159.     waitForAck(server);
  160.     msg3.send(gateway);
  161.     waitForAck(server);
  162.     msg4.send(gateway);
  163.     waitForAck(server);
  164.     msg5.send(gateway);
  165.     waitForAck(server);
  166.     msg1.send(gateway);
  167.     waitForAck(server);
  168.     msg6.send(gateway);
  169.     waitForAck(server);
  170.     msg7.send(gateway);
  171.     waitForAck(server);
  172.     msg8.send(gateway);
  173.     waitForAck(server);
  174.     CreateConnection msg9;
  175.     CallId msg9_id("0123456789ABCDEF");
  176.     ConnectionId msg9_connection("FEDCBA9876543210");
  177.     //    Entity msg9_entity("foo@bar.com");
  178.     //    Options msg9_options;
  179.     cout << "callid: " << msg9_id << "n";
  180.     cout << "connectionid: " << msg9_connection << "n";
  181.     ConnectionMode msg9_mode(ConnectionSendRecv);
  182.     RemoteConnectionDescriptor msg9_rcd;
  183.     msg9.insert(&msg9_id);
  184.     msg9.insert(&msg9_connection);
  185.     msg9.insert(&msg9_mode);
  186.     msg9.insert(&myself);
  187.     msg9.insert(&id);
  188.     SDPDescriptor foo;
  189.     foo.setSessionName("test session");
  190.     foo.setUserName("bogawa");
  191.     foo.setAddress(getHost());
  192.     foo.setSessionId(128538);
  193.     foo.setVersion(1000);
  194.     foo.setPort(6502);
  195.     foo.addFormat(1);
  196.     RemoteConnectionDescriptor msg9_rd(foo);
  197.     msg9.insert(&msg9_rd);
  198.     cout << msg9 << "n";
  199.     msg9.send(gateway);
  200.     waitForAck(server);
  201.     ModifyConnection msg10;
  202.     msg10.insert(&msg9_id);
  203.     msg10.insert(&msg9_connection);
  204.     msg10.insert(&msg9_mode);
  205.     msg10.insert(&myself);
  206.     msg10.insert(&id);
  207.     cout << msg10 << "n";
  208.     msg10.send(gateway);
  209.     waitForAck(server);
  210.     cout << "--------------------- local test ------------------n";
  211.     SDPDescriptor bar;
  212.     bar.setSessionName("test session");
  213.     bar.setUserName("bogawa");
  214.     bar.setAddress(getHost());
  215.     bar.setSessionId(128538);
  216.     bar.setVersion(1000);
  217.     bar.setPort(6502);
  218.     bar.addFormat(1);
  219.     LocalConnectionDescriptor local(bar);
  220.     cout << "local: " << local << "n";
  221.     MgcpResponse response00(200, 500, "OK");
  222.     response00.insert(&events8);
  223.     response00.insert(&local);
  224.     cout << response00 << "n";
  225.     response00.send(gateway);
  226.     DeleteConnection delconn;
  227. #if 0
  228.     struct rusage usage;
  229.     getrusage (RUSAGE_SELF, &usage);
  230.     cout << "ru_maxrss: " << usage.ru_maxrss << "n";
  231.     cout << "ru_ixrss: " << usage.ru_ixrss << "n";
  232.     cout << "ru_idrss: " << usage.ru_idrss << "n";
  233.     cout << "ru_isrss: " << usage.ru_isrss << "n";
  234. #endif
  235. #endif 
  236.     return 0;
  237. }