diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_example_app_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_example_app_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,262 @@ + + +TB10.1 Example Applications: examples/MultimediaProtocols/RTPExample/src/ExampleApp.cpp Source File + + + + +

examples/MultimediaProtocols/RTPExample/src/ExampleApp.cpp

00001 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+00002 // All rights reserved.
+00003 // This component and the accompanying materials are made available
+00004 // under the terms of "Eclipse Public License v1.0"
+00005 // which accompanies this distribution, and is available
+00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
+00007 //
+00008 // Initial Contributors:
+00009 // Nokia Corporation - initial contribution.
+00010 //
+00011 // Contributors:
+00012 //
+00013 // Description:
+00014 //
+00015 
+00016 
+00017 #include "RTPFileStreamer.h"
+00018 #include "ExampleApp.h"
+00019 
+00020 
+00021 //CActiveConsole
+00022 CActiveConsole::CActiveConsole(MActiveConsoleNotify& aNotify):CActive(EPriorityStandard), iNotify(aNotify)
+00023         {
+00024         CActiveScheduler::Add(this);
+00025         }
+00026 
+00027 CActiveConsole::~CActiveConsole()
+00028         {
+00029         delete iConsole;
+00030         Cancel();
+00031         }
+00032 
+00033 CActiveConsole* CActiveConsole::NewL(MActiveConsoleNotify& aNotify,const TDesC& aTitle,const TSize& aSize)
+00034         {
+00035         CActiveConsole* console = new (ELeave) CActiveConsole(aNotify);
+00036         CleanupStack::PushL(console);
+00037         console->ConstructL(aTitle,aSize);
+00038         CleanupStack::Pop();
+00039         return console;
+00040         }
+00041 
+00042 void CActiveConsole::ConstructL(const TDesC& aTitle,const TSize& aSize)
+00043         {
+00044         iConsole = Console::NewL(aTitle,aSize);
+00045         }
+00046 
+00047 void CActiveConsole::DoCancel()
+00048         {
+00049         iConsole->ReadCancel();
+00050         }
+00051 
+00052 void CActiveConsole::RequestKey()
+00053         {
+00054         DrawCursor();
+00055         iConsole->Read(iStatus);
+00056         SetActive();
+00057         }
+00058 
+00059 void CActiveConsole::DrawCursor()
+00060         {
+00061         iConsole->Printf(_L(">>"));
+00062         }
+00063 
+00064 void CActiveConsole::RunL()
+00065         {
+00066         TChar ch = iConsole->KeyCode();
+00067         iNotify.KeyPressed(ch);
+00068         }
+00069 
+00070 //CExampleApp
+00071 CExampleApp::CExampleApp()
+00072         {
+00073         }
+00074         
+00075 CExampleApp::~CExampleApp()
+00076         {
+00077         delete iActiveConsole;
+00078         delete iMonitorConsole;
+00079         iSockServ.Close();
+00080         }
+00081         
+00082 CExampleApp* CExampleApp::NewL()
+00083         {
+00084         CExampleApp* thisapp = new (ELeave) CExampleApp();
+00085         CleanupStack::PushL(thisapp);
+00086         thisapp->ConstructL();
+00087         CleanupStack::Pop();
+00088         return thisapp;
+00089         }
+00090 
+00091 static TSize gMainConsole(KConsFullScreen,KConsFullScreen);
+00092 static TSize gTinyConsole(40,10);
+00093 
+00094 void CExampleApp::ConstructL()
+00095         {
+00096         iActiveConsole = CActiveConsole::NewL(*this,_L("Status"),gMainConsole);
+00097         iMonitorConsole = CActiveConsole::NewL(*this,_L("RtpExample"),gTinyConsole);
+00098         User::LeaveIfError(iSockServ.Connect());
+00099         }
+00100         
+00101 void CExampleApp::StartL()
+00102         {
+00103         _LIT(KTextWelcome, " ### RTP Example ### \n");
+00104         iMonitorConsole->Console().Printf(KTextWelcome);
+00105         
+00106         _LIT(KTextStartApp, "\n\n Starting the RTP application");
+00107         iMonitorConsole->Console().Printf ( KTextStartApp );
+00108         
+00109         _LIT(KTextPressAKey, "\n\n Press any key to step through the example");
+00110         iMonitorConsole->Console().Printf ( KTextPressAKey );
+00111         iMonitorConsole->Console().Getch ();    
+00112 
+00113         _LIT(KDAddr,"\n\n Local address: ");
+00114         iMonitorConsole->Console().Printf(KDAddr);
+00115         iMonitorConsole->Console().Printf(KDestAddr);
+00116         iMonitorConsole->Console().Getch ();
+00117         _LIT(KLPort,"\n\n Address family: ");
+00118         iMonitorConsole->Console().Printf(KLPort);
+00119         iMonitorConsole->Console().Printf(KLocalPort);
+00120         iMonitorConsole->Console().Getch ();
+00121         _LIT(KDPort,"\n\n RTP port number: ");
+00122         iMonitorConsole->Console().Printf(KDPort);
+00123         iMonitorConsole->Console().Printf(KDestPort);
+00124         iMonitorConsole->Console().Getch ();
+00125         _LIT(KSFile,"\n\n Source file name: ");
+00126         iMonitorConsole->Console().Printf(KSFile);
+00127         iMonitorConsole->Console().Printf(KsFileName);
+00128         iMonitorConsole->Console().Getch ();
+00129         _LIT(KTFile,"\n\n Target file name: ");
+00130         iMonitorConsole->Console().Printf(KTFile);
+00131         iMonitorConsole->Console().Printf(KdFileName);
+00132         iMonitorConsole->Console().Getch ();
+00133         _LIT(KBufSize,"\n\n Buffer size: ");
+00134         iMonitorConsole->Console().Printf(KBufSize);
+00135         iMonitorConsole->Console().Printf(KSize);
+00136         iMonitorConsole->Console().Getch ();
+00137 
+00138         TInt dport;
+00139         TInt lport;
+00140         TInt psize;
+00141         TInetAddr daddr;
+00142         TLex parser;
+00143         parser.Assign(KDestPort);
+00144         User::LeaveIfError(parser.Val(dport));
+00145         parser.Assign(KSize);
+00146         User::LeaveIfError(parser.Val(psize));
+00147         parser.Assign(KLocalPort);
+00148         User::LeaveIfError(parser.Val(lport));
+00149 
+00150         RHostResolver resolver;
+00151         User::LeaveIfError(resolver.Open(iSockServ,KAfInet,KProtocolInetUdp));
+00152         CleanupClosePushL(resolver);
+00153         TNameEntry entry;
+00154         TRequestStatus status;
+00155         resolver.GetByName(KDestAddr,entry,status);
+00156         User::WaitForRequest(status);
+00157         User::LeaveIfError(status.Int());
+00158         CleanupStack::PopAndDestroy(1);//close resolver
+00159 
+00160         TSockAddr remote = entry().iAddr;
+00161         remote.SetPort(dport);
+00162 
+00163         TInt connId=KErrNotFound;
+00164         iMonitorConsole->Console().Printf(_L("\n\n Sending RTP packet from %S file to %S file."),&KsFileName,&KdFileName);              
+00165         iMonitorConsole->Console().Getch();
+00166         iStreamer = CRtpFileStreamer::NewL(iSockServ,KsFileName,KdFileName,psize,remote,lport,connId);
+00167         iStreamer->SetObserver(*this);
+00168         iStreamer->StartL();
+00169         CActiveScheduler::Start();
+00170         }
+00171         
+00172 void CExampleApp::Stop()
+00173         {
+00174         if (iStreamer)
+00175                 {
+00176                 delete iStreamer;
+00177                 }
+00178         CActiveScheduler::Stop();
+00179         }
+00180         
+00181 void CExampleApp::DrawMonitor()
+00182         {
+00183         iMonitorConsole->Console().Printf(_L("\n Sent: %d\n Recv: %d"),iSent,iRecv);
+00184         }
+00185         
+00186 void CExampleApp::NotifyPacketSent()
+00187         {
+00188         iSent++;
+00189         DrawMonitor();
+00190         iActiveConsole->Console().Printf(_L("s"));
+00191         }
+00192         
+00193 void CExampleApp::NotifyPacketReceived()
+00194         {
+00195         iRecv++;
+00196         DrawMonitor();
+00197         iActiveConsole->Console().Printf(_L("r"));
+00198         }
+00199         
+00200 void CExampleApp::NotifyComplete()
+00201         {
+00202         iMonitorConsole->Console().Printf(_L("\n\n Successfully sent %d RTP packet(s)"),iRecv);
+00203         iMonitorConsole->Console().Getch();
+00204         
+00205         _LIT(KExit,"\n\n Press any key to exit the application ");
+00206         iMonitorConsole->Console().Printf(KExit); 
+00207         iMonitorConsole->Console().Getch();
+00208         
+00209         if (iStreamer)
+00210                 {
+00211                 delete iStreamer;
+00212                 }
+00213         CActiveScheduler::Stop();
+00214         }
+00215         
+00216 void CExampleApp::NotifyError()
+00217         {
+00218         iMonitorConsole->Console().Printf(_L("Error\n"));
+00219         iMonitorConsole->Console().Getch();
+00220         iActiveConsole->Console().Printf(_L("E"));
+00221         }
+00222         
+00223 void CExampleApp::KeyPressed(TChar /*aKey*/)
+00224         {
+00225         }
+00226 
+00227 void MainL()
+00228         {
+00229         CExampleApp* app = CExampleApp::NewL();
+00230         CleanupStack::PushL(app);
+00231         app->StartL();
+00232         CleanupStack::PopAndDestroy(app);
+00233         }
+00234         
+00235 TInt E32Main()
+00236         {
+00237         __UHEAP_MARK;
+00238         CTrapCleanup* cleanupStack=CTrapCleanup::New();
+00239         CActiveScheduler* activescheduler=new CActiveScheduler;
+00240         CActiveScheduler::Install(activescheduler);
+00241 
+00242         TRAPD(err, MainL());
+00243         _LIT(KTxtEPOC32EX,"EXAMPLES");
+00244         __ASSERT_ALWAYS(!err,User::Panic(KTxtEPOC32EX,err));
+00245         
+00246         delete activescheduler;
+00247         delete cleanupStack;
+00248         __UHEAP_MARKEND;
+00249         return KErrNone;
+00250         }
+

Generated on Thu Jan 21 10:33:00 2010 for TB10.1 Example Applications by  + +doxygen 1.5.3
+ +