00001
00002
00003
00004
00005 #ifndef LISTENER_H
00006 #define LISTENER_H
00007
00008
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 );
00157
00166 void HandleListenerDataReceivedL(const TDesC& aData);
00167
00174 void HandleListenerConnectedL();
00175
00183 void HandleListenerDisconnectedL();
00184
00185
00186 public:
00187
00188
00189 RSocket iListenSock;
00190
00191 RSocket iSock;
00192
00193 TSockXfrLength iLen;
00194
00195 TBuf8<KReceivedBufferSize> iBuffer;
00196
00197 MListenerObserver& iObserver;
00198
00199 RSocketServ& iSocketServ;
00200
00201 TBool iIsConnected;
00202
00203 enum TState
00204 {
00205 ENone = 1,
00206 EConnecting,
00207 EWaiting,
00208 ESending
00209 };
00210
00211 TState iState;
00212 };
00213
00214 #endif