examples/ForumNokia/BluetoothPMPExample/inc/Listener.h

00001 /*
00002  * Copyright © 2009 Nokia Corporation.
00003  */
00004 
00005 #ifndef LISTENER_H
00006 #define LISTENER_H
00007 
00008 // INCLUDES
00009 #include <e32base.h>
00010 
00011 #include <es_sock.h>
00012 #include <btdevice.h>
00013 #include <bt_sock.h>
00014 #include <btmanclient.h>
00015 
00016 #include "Common.h"
00017 
00018 const TInt KReceivedBufferSize = 40;
00019 
00020 class MListenerObserver
00021 {
00022 
00023 public:
00029     virtual void HandleListenerDataReceivedL(const TDesC& aData)=0;
00035     virtual void HandleListenerConnectedL()=0;
00041     virtual void HandleListenerDisconnectedL()=0;
00042 };
00043 
00044 
00045 class CListener : public CActive
00046 {
00047 public:
00048 
00055     static CListener* NewL(MListenerObserver& aObserver,
00056         RSocketServ& aSocketServ);
00057 
00062     static CListener* NewLC(MListenerObserver& aObserver,
00063         RSocketServ& aSocketServ);
00064 
00070     ~CListener();
00071 
00080     void StartListenerL(TInt& aChannel);
00081     
00087     void StopListener();
00088 
00097     void SendData(const TDesC8& aData);
00098 
00106     TBool IsConnected();
00107 
00108 protected:
00109 
00115     void RunL();
00116 
00122     void DoCancel();
00123 
00124     TInt RunError(TInt aError);
00125     
00126 private:
00127 
00136     CListener(MListenerObserver& aObserver, RSocketServ& aSocketServ);
00137 
00142     void ConstructL();
00143 
00149     void ReceiveData();
00150 
00156     void SetSecurityL(TInt /*aChannel*/);
00157 
00166     void HandleListenerDataReceivedL(const TDesC& aData);
00167 
00174     void HandleListenerConnectedL();
00175 
00183     void HandleListenerDisconnectedL();
00184 
00185 
00186 public: // data
00187 
00188     // listening socket
00189     RSocket iListenSock;
00190     // accepted socket
00191     RSocket iSock;
00192     // length of received data
00193     TSockXfrLength iLen;
00194     // buffer holding received data
00195     TBuf8<KReceivedBufferSize> iBuffer;
00196     // observer reference
00197     MListenerObserver& iObserver;
00198     // socket server handle
00199     RSocketServ& iSocketServ;
00200     // listener connection status
00201     TBool iIsConnected;
00202     // the state of the listener
00203     enum TState
00204         {
00205         ENone = 1,
00206         EConnecting,
00207         EWaiting,
00208         ESending
00209         };
00210 
00211     TState iState;
00212 };
00213 
00214 #endif

Generated by  doxygen 1.6.2