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 @@ + +
+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 } +