author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> |
Wed, 13 Oct 2010 15:51:46 +0300 | |
branch | RCL_3 |
changeset 82 | 042fd2753b8f |
parent 66 | 07a122eea281 |
permissions | -rw-r--r-- |
66 | 1 |
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). |
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
2 |
// All rights reserved. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
3 |
// This component and the accompanying materials are made available |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
4 |
// under the terms of "Eclipse Public License v1.0" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
5 |
// which accompanies this distribution, and is available |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
6 |
// at the URL "http://www.eclipse.org/legal/epl-v10.html". |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
7 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
8 |
// Initial Contributors: |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
9 |
// Nokia Corporation - initial contribution. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
10 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
11 |
// Contributors: |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
12 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
13 |
// Description: |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
14 |
// Implements CWapSmsProvider and CWapSmsProviderWrite |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
15 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
16 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
17 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
18 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
19 |
@file |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
20 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
21 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
22 |
#include <e32std.h> |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
23 |
#include <wap_sock.h> |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
24 |
#include "ws_main.h" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
25 |
#include "es_wsms.h" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
26 |
#include "WAPDGRM.H" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
27 |
#include "ws_obsvr.h" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
28 |
#include "smsprot.h" |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
29 |
#include <es_mbuf.h> |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
30 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
31 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
32 |
// implementation of CWapSmsProvider |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
33 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
34 |
|
66 | 35 |
// CWapSmsProvider policies |
36 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderSetLocalNamePolicy, ECapabilityNetworkServices ); |
|
37 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderSetOptionPolicy, ECapability_None); |
|
38 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderGetLengthIoctlPolicy,ECapability_None); |
|
39 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderGetMessageParamLengthIoctlPolicy,ECapability_None); |
|
40 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderGetMessageParametersIoctlPolicy,ECapabilityReadDeviceData); |
|
41 |
static _LIT_SECURITY_POLICY_C1(wapSmsProviderWritePolicy,ECapabilityNetworkServices); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
42 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
43 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
44 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
45 |
* Factory |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
46 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
47 |
CWapSmsProvider* CWapSmsProvider::NewL(CWapSmsProtocol* aProtocol) |
66 | 48 |
{ |
49 |
LOGWAPPROT1("CWapSmsProvider::NewL()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
50 |
|
66 | 51 |
CWapSmsProvider* provider=new(ELeave) CWapSmsProvider(aProtocol); |
52 |
CleanupStack::PushL(provider); |
|
53 |
provider->iWapSmsProviderWrite = CWapSmsProviderWrite::NewL(*provider); |
|
54 |
CleanupStack::Pop(); |
|
55 |
return provider; |
|
56 |
} // CWapSmsProvider::NewL |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
57 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
58 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
59 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
60 |
* Constructor |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
61 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
62 |
CWapSmsProvider::CWapSmsProvider(CWapSmsProtocol* aProtocol) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
63 |
:iMessageType(ESmartMessage) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
64 |
,iProtocol(aProtocol) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
65 |
,iSendPending(EFalse) |
66 | 66 |
,iIoctlOutstanding(EFalse) |
67 |
,iIsNewStyleClient(EFalse) |
|
68 |
,iStatusReportScheme(EWapSmsDefault) |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
69 |
{ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
70 |
iRecvdMsgQueue.SetOffset(CWapDatagram::LinkOffset()); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
71 |
} // CWapSmsProvider::CWapSmsProvider |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
72 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
73 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
74 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
75 |
* Destructor |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
76 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
77 |
CWapSmsProvider::~CWapSmsProvider() |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
78 |
{ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
79 |
iSAPLink.Deque(); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
80 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
81 |
while(!iRecvdMsgQueue.IsEmpty()) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
82 |
{ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
83 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
84 |
iRecvdMsgQueue.Remove(*msg); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
85 |
delete msg; |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
86 |
} |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
87 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
88 |
delete iWapSmsProviderWrite; |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
89 |
} // CWapSmsProvider::~CWapSmsProvider |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
90 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
91 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
92 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
93 |
* Return WAPSMS options |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
94 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
95 |
TInt CWapSmsProvider::GetOption(TUint aLevel,TUint aName, TDes8& aOption)const |
66 | 96 |
{ |
97 |
LOGWAPPROT1("CWapSmsProvider::GetOption"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
98 |
|
66 | 99 |
TInt ret=KErrNone; |
100 |
if (TInt(aLevel)==KWapSmsOptionLevel && TInt(aName)==KWapSmsOptionNameDCS) |
|
101 |
aOption = TPtrC8((TText8*)&iDataCodingScheme,sizeof(TWapSmsDataCodingScheme)); |
|
102 |
else |
|
103 |
ret=iProtocol->GetOption(aLevel,aName,aOption,NULL); |
|
104 |
return ret; |
|
105 |
} // CWapSmsProvider::GetOption |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
106 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
107 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
108 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
109 |
* Set WAPSMS options |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
110 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
111 |
* @capability None |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
112 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
113 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
114 |
TInt CWapSmsProvider::SetOption(TUint aLevel, TUint aName, const TDesC8& aOption) |
66 | 115 |
{ |
116 |
LOGWAPPROT1("CWapSmsProvider::SetOption"); |
|
117 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderSetOptionPolicy,"CWapSmsProvider SetOption policy check") != KErrNone)) |
|
118 |
{ |
|
119 |
return KErrPermissionDenied; |
|
120 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
121 |
|
66 | 122 |
TInt ret=KErrNone; |
123 |
if (TInt(aLevel)==KWapSmsOptionLevel) |
|
124 |
{ |
|
125 |
switch(TInt(aName)) |
|
126 |
{ |
|
127 |
case KWapSmsOptionNameDCS: |
|
128 |
{ |
|
129 |
iDataCodingScheme = static_cast<TWapSmsDataCodingScheme>(*aOption.Ptr()); |
|
130 |
break; |
|
131 |
} |
|
132 |
case KWapSmsOptionWapDatagram: |
|
133 |
{ |
|
134 |
iMessageType=EWapDatagram; |
|
135 |
break; |
|
136 |
} |
|
137 |
case KWapSmsStatusReportScheme: |
|
138 |
{ |
|
139 |
iStatusReportScheme = static_cast<TWapSmsStatusReportScheme>(*aOption.Ptr()); |
|
140 |
break; |
|
141 |
} |
|
142 |
case KWapSmsOptionNewStyleClient: |
|
143 |
{ |
|
144 |
iIsNewStyleClient = ETrue; |
|
145 |
break; |
|
146 |
} |
|
147 |
case KWapSmsOptionOKToDeleteMessage: |
|
148 |
{ |
|
149 |
//Get the first message from the queue |
|
150 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
|
151 |
//Find and delete from SAR |
|
152 |
TBool found=iProtocol->FindAndDeleteMsg(*msg); |
|
153 |
if(!found) |
|
154 |
{ |
|
155 |
LOGWAPPROT1("CWapSmsProvider::SetOption: Error. Couldn't find the message in the SAR for deletion"); |
|
156 |
break; |
|
157 |
} |
|
158 |
//Remove from the queue |
|
159 |
iRecvdMsgQueue.Remove(*msg); |
|
160 |
delete msg; |
|
161 |
break; |
|
162 |
} |
|
163 |
default: |
|
164 |
ret=KErrNotSupported; |
|
165 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
166 |
|
66 | 167 |
} |
168 |
else |
|
169 |
{ |
|
170 |
ret=iProtocol->SetOption(aLevel,aName,aOption,NULL); |
|
171 |
} |
|
172 |
return ret; |
|
173 |
} // CWapSmsProvider::SetOption |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
174 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
175 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
176 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
177 |
* Shutdown the SAP |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
178 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
179 |
void CWapSmsProvider::Shutdown(TCloseType aType) |
66 | 180 |
{ |
181 |
LOGWAPPROT1("CWapSmsProvider::Shutdown"); |
|
182 |
if (aType!=CServProviderBase::EImmediate) |
|
183 |
iSocket->CanClose(); |
|
184 |
} // CWapSmsProvider::Shutdown |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
185 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
186 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
187 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
188 |
* Setup datagram with socket specific options and forward to protocol |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
189 |
* Return zero to block the send - will be completed by CWapSapMessageSender |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
190 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
191 |
* @capability NetworkServices |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
192 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
193 |
TInt CWapSmsProvider::Write(RMBufChain& aBufChain, TUint /*options*/, TSockAddr* aAddr) |
66 | 194 |
{ |
195 |
LOGWAPPROT1("CWapSmsProvider::Write()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
196 |
|
66 | 197 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderWritePolicy,"CWapSmsProvider Write policy check") != KErrNone)) |
198 |
{ |
|
199 |
return KErrPermissionDenied; |
|
200 |
} |
|
201 |
// @note: LOGIFH2A2 macro for logging esock write |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
202 |
#ifdef SMSLOGGERIF |
66 | 203 |
TInt length = aBufChain.Length(); |
204 |
LOGWAPPROT2("CWapSmsProvider::Write [%d bytes]", length); |
|
205 |
TBuf8<0x100> dumpBuf; |
|
206 |
if(length > 0x100) |
|
207 |
{ |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
208 |
|
66 | 209 |
TInt parts=0; |
210 |
TInt offset = 0; |
|
211 |
while (offset < length) |
|
212 |
{ |
|
213 |
aBufChain.CopyOut(dumpBuf, offset); |
|
214 |
offset += length; |
|
215 |
LOGIF2(_L8("ESock WAP concantonated part: %d"),parts++); |
|
216 |
LOGIF2(_L8("ESOCK WRITE: %S"),&dumpBuf); |
|
217 |
LOGIFH2A2(_L8("ESOCK WRITE: "),dumpBuf); |
|
218 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
219 |
|
66 | 220 |
} |
221 |
else |
|
222 |
{ |
|
223 |
aBufChain.CopyOut(dumpBuf, 0); |
|
224 |
LOGIF2(_L8("ESOCK WRITE: %S"),&dumpBuf); |
|
225 |
LOGIFH2A2(_L8("ESOCK WRITE: "),dumpBuf); |
|
226 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
227 |
#endif |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
228 |
|
66 | 229 |
// Note that if this fails somehow it still frees the buf chain and sets itself active - it's |
230 |
// not clear to me whether this is good behaviour but it's the pre-mbuf behaviour too |
|
231 |
iWapSmsProviderWrite->Start(aBufChain, *aAddr); |
|
232 |
return KErrNone; |
|
233 |
} // CWapSmsProvider::Write |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
234 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
235 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
236 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
237 |
* Read a datagram off the queue |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
238 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
239 |
TInt CWapSmsProvider::GetData(RMBufChain& aBufChain, TUint aLength, TUint /*options*/,TSockAddr* aAddr) |
66 | 240 |
{ |
241 |
LOGWAPPROT1("CWapSmsProvider::GetData()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
242 |
|
66 | 243 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
244 |
if(!iIsNewStyleClient) |
|
245 |
{ |
|
246 |
iRecvdMsgQueue.Remove(*msg); |
|
247 |
} |
|
248 |
TInt err = msg->WapDatagram(aBufChain, aLength); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
249 |
|
66 | 250 |
//@note: LOGIFH2A2 macro for logging esock getdata |
251 |
LOGWAPPROT1("CWapSmsProvider::GetData"); |
|
252 |
// Logging migrated to WapDatagram() for ease of descriptor ref |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
253 |
|
66 | 254 |
if (err > 0 && aAddr) |
255 |
{ |
|
256 |
TWapAddr* wapAddr = reinterpret_cast<TWapAddr*>(aAddr); |
|
257 |
TInt toPort,fromPort; |
|
258 |
msg->Ports(fromPort,toPort); |
|
259 |
wapAddr->SetWapPort(static_cast<TWapPortNumber>(fromPort)); |
|
260 |
TBuf8<KMaxSockAddrSize> addrBuf; |
|
261 |
addrBuf.Copy(msg->FromAddress()); |
|
262 |
wapAddr->SetWapAddress(addrBuf); |
|
263 |
} |
|
264 |
if(!iIsNewStyleClient) |
|
265 |
{ |
|
266 |
delete msg; |
|
267 |
} |
|
268 |
return err > 0? 1: err; // datagrams are atoms not byte counts |
|
269 |
} // CWapSmsProvider::GetData |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
270 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
271 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
272 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
273 |
* New data has arrived notify ESOCK. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
274 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
275 |
void CWapSmsProvider::NewData(CWapDatagram* aMsg) |
66 | 276 |
{ |
277 |
TBool notifyEsock = EFalse; |
|
278 |
LOGWAPPROT1("CWapSmsProvider::NewData"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
279 |
|
66 | 280 |
if(iIoctlOutstanding && iName==KSOGetLength && iIsNewStyleClient) |
281 |
{ |
|
282 |
TPckgBuf<TInt> buf= aMsg->WapDatagramLength(); |
|
283 |
iSocket->IoctlComplete(&buf); |
|
284 |
iIoctlOutstanding= EFalse; |
|
285 |
iName= NULL; |
|
286 |
notifyEsock = ETrue; |
|
287 |
} |
|
288 |
else if(iIoctlOutstanding && iName==KSOGetMessageParametersLength && iIsNewStyleClient) |
|
289 |
{ |
|
290 |
CBufFlat* buffer = aMsg->SmsExternalisedStream(); |
|
291 |
TPckgBuf<TInt> buf = buffer->Size(); |
|
292 |
iSocket->IoctlComplete(&buf); |
|
293 |
iIoctlOutstanding= EFalse; |
|
294 |
iName= NULL; |
|
295 |
notifyEsock = ETrue; |
|
296 |
} |
|
297 |
else if(iIoctlOutstanding && iName==KSOGetMessageParameters && iIsNewStyleClient) |
|
298 |
{ |
|
299 |
CBufFlat* buffer = aMsg->SmsExternalisedStream(); |
|
300 |
TPtr8 buf = buffer->Ptr(0); |
|
301 |
iSocket->IoctlComplete(&buf); |
|
302 |
iIoctlOutstanding= EFalse; |
|
303 |
iName= NULL; |
|
304 |
notifyEsock = ETrue; |
|
305 |
} |
|
306 |
else if(iName!=KSOGetLength && iName!=KSOGetMessageParametersLength && iName!=KSOGetMessageParameters && iIsNewStyleClient) |
|
307 |
{ |
|
308 |
notifyEsock= EFalse; |
|
309 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
310 |
|
66 | 311 |
if(!iIsNewStyleClient || notifyEsock) |
312 |
iSocket->NewData(1); |
|
313 |
//else we notify ESock in IOCTL for new client |
|
314 |
} // CWapSmsProvider::NewData |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
315 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
316 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
317 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
318 |
* Error happened, notify ESOCK |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
319 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
320 |
void CWapSmsProvider::Error(TInt aError, TUint aOperationMask) |
66 | 321 |
{ |
322 |
LOGWAPPROT3("CWapSmsProvider::Error [aError=%d, mask=%d] ", aError, aOperationMask); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
323 |
|
66 | 324 |
iSocket->Error(aError, aOperationMask); |
325 |
} // CWapSmsProvider::Error |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
326 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
327 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
328 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
329 |
* Return the offset to the dblquelink |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
330 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
331 |
TInt CWapSmsProvider::LinkOffset() |
66 | 332 |
{ |
333 |
LOGWAPPROT1("CWapSmsProvider::LinkOffset"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
334 |
|
66 | 335 |
return _FOFF(CWapSmsProvider,iSAPLink); |
336 |
} // CWapSmsProvider::LinkOffset |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
337 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
338 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
339 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
340 |
* Return the address associated with the sap |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
341 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
342 |
void CWapSmsProvider::LocalName(TSockAddr& aAddr) const |
66 | 343 |
{ |
344 |
LOGWAPPROT1("CWapSmsProvider::LocalName"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
345 |
|
66 | 346 |
Mem::Copy(&aAddr,&iLocalAddress,sizeof(TSockAddr)); |
347 |
} // CWapSmsProvider::LocalName |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
348 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
349 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
350 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
351 |
* Set the local address of the sap - called by RSocket::Bind |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
352 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
353 |
* @capability NetworkServices |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
354 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
355 |
TInt CWapSmsProvider::SetLocalName(TSockAddr& aAddr) |
66 | 356 |
{ |
357 |
LOGWAPPROT1("CWapSmsProvider::SetLocalName()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
358 |
|
66 | 359 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderSetLocalNamePolicy,"CWapSmsProvider SetLocalName policy check") != KErrNone)) |
360 |
{ |
|
361 |
return KErrPermissionDenied; |
|
362 |
} |
|
363 |
TWapAddr* wapAddr = reinterpret_cast<TWapAddr*>(&aAddr); |
|
364 |
LOGWAPPROT2("CWapSmsProvider::SetLocalName %d",wapAddr->WapPort()); |
|
365 |
// Due ESOCK interface port EWapPortUnspecified value (-1) can be transferred as a maximum unsigned 16 int |
|
366 |
if (wapAddr->WapPort()==EWapPortUnspecified || wapAddr->WapPort()==static_cast<TUint16>(EWapPortUnspecified)) |
|
367 |
{ |
|
368 |
if(!iProtocol->AllocateLocalAddress(iLocalAddress)) |
|
369 |
return KErrInUse; |
|
370 |
else return KErrNone; |
|
371 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
372 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
373 |
|
66 | 374 |
TInt ret=iProtocol->AddrAlreadyUsedByWAP(*wapAddr,this); |
375 |
if(ret == KErrInUse) return ret; |
|
376 |
else if(ret == KErrAlreadyExists) return KErrNone; |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
377 |
|
66 | 378 |
TSmsAddr addr; |
379 |
if(wapAddr->Port() <=255) |
|
380 |
addr.SetSmsAddrFamily(ESmsAddrApplication8BitPort); |
|
381 |
else |
|
382 |
addr.SetSmsAddrFamily(ESmsAddrApplication16BitPort); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
383 |
|
66 | 384 |
addr.SetPort(wapAddr->Port()); |
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
385 |
|
66 | 386 |
if((iProtocol->SmsProtocol()->SmsAddrIsAlreadyUsed(NULL,addr))) |
387 |
return KErrInUse; |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
388 |
|
66 | 389 |
Mem::Copy(&iLocalAddress,&aAddr,sizeof(TSockAddr)); |
390 |
TInt err; |
|
391 |
TRAP(err,ret = iProtocol->CheckSarL(*wapAddr,this)); |
|
392 |
if(err!=KErrNone) |
|
393 |
return err; |
|
394 |
if(ret!=KErrNone) |
|
395 |
{ |
|
396 |
Error(ret,MSocketNotify::EErrorAllOperations); |
|
397 |
} |
|
398 |
return KErrNone; |
|
399 |
} // RSocket::Bind |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
400 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
401 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
402 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
403 |
* Returns true if aAddr matches the local address of the sap |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
404 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
405 |
TBool CWapSmsProvider::MatchesLocalAddress(const TWapAddr& aAddr) |
66 | 406 |
{ |
407 |
LOGWAPPROT1("CWapSmsProvider::MatchesLocalAddress"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
408 |
|
66 | 409 |
return (iLocalAddress == aAddr); |
410 |
} // CWapSmsProvider::MatchesLocalAddress |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
411 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
412 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
413 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
414 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
415 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
416 |
* Called to perform specific IO control by the client (i.e. Wap Messaging API).The client is able |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
417 |
* to get the size of the datagram once it has been received or confirm the receipt |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
418 |
* of the message. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
419 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
420 |
* Only one ioctl request may be outstanding at any one time. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
421 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
422 |
* Implementation of pure virtual CServProviderBase::Ioctl(). |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
423 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
424 |
* @param aLevel the IOCTL level. // Can be only KSolWapProv |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
425 |
* @param aName the IOCTL name. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
426 |
* @param aOption the IOCTL option. |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
427 |
* |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
428 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
429 |
void CWapSmsProvider::Ioctl(TUint aLevel,TUint aName,TDes8 * /*aOption*/) |
66 | 430 |
{ |
431 |
LOGWAPPROT3("CWapSmsProvider::Ioctl [aLevel=%d, aName=%d]", aLevel, aName); |
|
432 |
LOGWAPPROT2("CWapSmsProtocol::Ioctl [provider=0x%08x]",this); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
433 |
|
66 | 434 |
iName=aName; |
435 |
switch (aLevel) |
|
436 |
{ |
|
437 |
case KSolWapProv: |
|
438 |
{ |
|
439 |
if(iIoctlOutstanding || !iIsNewStyleClient) |
|
440 |
{ |
|
441 |
Error(KErrInUse,MSocketNotify::EErrorIoctl); |
|
442 |
break; |
|
443 |
} |
|
444 |
switch (iName) |
|
445 |
{ |
|
446 |
case KSOGetLength: |
|
447 |
// |
|
448 |
// Get the length |
|
449 |
// |
|
450 |
{ |
|
451 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderGetLengthIoctlPolicy,"CWapSmsProvider GetLength Ioctl policy check") != KErrNone)) |
|
452 |
{ |
|
453 |
Error(KErrPermissionDenied,MSocketNotify::EErrorIoctl); |
|
454 |
return; |
|
455 |
} |
|
456 |
iIoctlOutstanding = ETrue; |
|
457 |
//check the queue for any other message for this client and call new data if any exist |
|
458 |
if(!iRecvdMsgQueue.IsEmpty()) |
|
459 |
{ |
|
460 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
|
461 |
//check the datagram. |
|
462 |
if(msg->IsComplete()) |
|
463 |
{ |
|
464 |
NewData(msg); |
|
465 |
} |
|
466 |
else |
|
467 |
{ |
|
468 |
// else notify the client with error. |
|
469 |
// Note:this can happen if client uses 8-Bit port number for 7-Bit datagram |
|
470 |
Error(KErrGeneral,MSocketNotify::EErrorIoctl); |
|
471 |
iIoctlOutstanding = EFalse; |
|
472 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
473 |
|
66 | 474 |
} |
475 |
break; |
|
476 |
} |
|
477 |
||
478 |
case KSOGetMessageParametersLength: |
|
479 |
// |
|
480 |
// Get the Message Parameters Length |
|
481 |
// |
|
482 |
{ |
|
483 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderGetMessageParamLengthIoctlPolicy,"CWapSmsProvider KSOGetMessageParametersLength Ioctl policy check") != KErrNone)) |
|
484 |
{ |
|
485 |
Error(KErrPermissionDenied,MSocketNotify::EErrorIoctl); |
|
486 |
return; |
|
487 |
} |
|
488 |
iIoctlOutstanding = ETrue; |
|
489 |
//check the queue for any other message for this client and call new data if any exist |
|
490 |
if(!iRecvdMsgQueue.IsEmpty()) |
|
491 |
{ |
|
492 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
|
493 |
//check the datagram. |
|
494 |
if(msg->IsComplete()) |
|
495 |
{ |
|
496 |
NewData(msg); |
|
497 |
} |
|
498 |
else |
|
499 |
{ |
|
500 |
// else notify the client with error. |
|
501 |
// Note:this can happen if client uses 8-Bit port number for 7-Bit datagram |
|
502 |
Error(KErrGeneral,MSocketNotify::EErrorIoctl); |
|
503 |
iIoctlOutstanding = EFalse; |
|
504 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
505 |
|
66 | 506 |
} |
507 |
break; |
|
508 |
} |
|
509 |
||
510 |
case KSOGetMessageParameters: |
|
511 |
// |
|
512 |
// Get the Message Parameters |
|
513 |
// |
|
514 |
{ |
|
515 |
if(!iSecurityChecker || (iSecurityChecker->CheckPolicy(wapSmsProviderGetMessageParametersIoctlPolicy,"CWapSmsProvider GetMessageParameters Ioctl policy check") != KErrNone)) |
|
516 |
{ |
|
517 |
Error(KErrPermissionDenied,MSocketNotify::EErrorIoctl); |
|
518 |
return; |
|
519 |
} |
|
520 |
iIoctlOutstanding = ETrue; |
|
521 |
//check the queue for any other message for this client and call new data if any exist |
|
522 |
if(!iRecvdMsgQueue.IsEmpty()) |
|
523 |
{ |
|
524 |
CWapDatagram* msg = iRecvdMsgQueue.First(); |
|
525 |
//check the datagram. |
|
526 |
if(msg->IsComplete()) |
|
527 |
{ |
|
528 |
NewData(msg); |
|
529 |
} |
|
530 |
else |
|
531 |
{ |
|
532 |
// else notify the client with error. |
|
533 |
// Note:this can happen if client uses 8-Bit port number for 7-Bit datagram |
|
534 |
Error(KErrGeneral,MSocketNotify::EErrorIoctl); |
|
535 |
iIoctlOutstanding = EFalse; |
|
536 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
537 |
|
66 | 538 |
} |
539 |
break; |
|
540 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
541 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
542 |
|
66 | 543 |
default: |
544 |
// |
|
545 |
// Unsupported ioctl name |
|
546 |
// |
|
547 |
{ |
|
548 |
// Error gracefully |
|
549 |
Error(KErrNotSupported,MSocketNotify::EErrorIoctl); |
|
550 |
} |
|
551 |
} |
|
552 |
break; |
|
553 |
} |
|
554 |
default: |
|
555 |
// Gracefully error in release build |
|
556 |
Error(KErrNotSupported,MSocketNotify::EErrorIoctl); |
|
557 |
} |
|
558 |
} // CServProviderBase::Ioctl |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
559 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
560 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
561 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
562 |
* Cancel IOCTL- can only have one outstanding IOCTL at a time |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
563 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
564 |
void CWapSmsProvider::CancelIoctl(TUint aLevel,TUint aName) |
66 | 565 |
{ |
566 |
LOGWAPPROT1("CWapSmsProvider::CancelIoctl()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
567 |
|
66 | 568 |
if(!iIoctlOutstanding || (aName!=iName) || (aLevel!=KSolWapProv)) |
569 |
{ |
|
570 |
Error(KErrNotFound,MSocketNotify::EErrorIoctl); |
|
571 |
} |
|
572 |
else |
|
573 |
{ |
|
574 |
iIoctlOutstanding=EFalse; |
|
575 |
} |
|
576 |
} // CWapSmsProvider::CancelIoctl |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
577 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
578 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
579 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
580 |
* Start the provider- does nothing |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
581 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
582 |
void CWapSmsProvider::Start() |
66 | 583 |
{ |
584 |
LOGWAPPROT1("CWapSmsProvider::Start()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
585 |
|
66 | 586 |
} // CWapSmsProvider::Start |
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
587 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
588 |
void CWapSmsProvider::AddToQueue(CWapDatagram* aMsg) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
589 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
590 |
* Adding the datagram to received messages queue |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
591 |
*/ |
66 | 592 |
{ |
593 |
LOGWAPPROT1("CWapSmsProvider::AddToQueue..."); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
594 |
|
66 | 595 |
iRecvdMsgQueue.AddLast(*aMsg); |
596 |
NewData(aMsg); |
|
597 |
} // CWapSmsProvider::AddToQueue |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
598 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
599 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
600 |
TInt CWapSmsProvider::SecurityCheck(MProvdSecurityChecker* aSecurityChecker) |
66 | 601 |
{ |
602 |
LOGWAPPROT1("CWapSmsProvider::SecurityCheck()"); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
603 |
|
66 | 604 |
iSecurityChecker=aSecurityChecker; |
605 |
return KErrNone; |
|
606 |
} // CWapSmsProvider::SecurityCheck |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
607 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
608 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
609 |
TWapSmsStatusReportScheme CWapSmsProvider::GetStatusReportScheme() |
66 | 610 |
{ |
611 |
return iStatusReportScheme; |
|
612 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
613 |
|
66 | 614 |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
615 |
TWapSmsDataCodingScheme CWapSmsProvider::GetDataCodingScheme() |
66 | 616 |
{ |
617 |
return iDataCodingScheme; |
|
618 |
} |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
619 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
620 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
621 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
622 |
// implementation of CWapSmsProviderWrite |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
623 |
// |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
624 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
625 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
626 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
627 |
* 2 phase constructor |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
628 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
629 |
CWapSmsProviderWrite* CWapSmsProviderWrite::NewL(CWapSmsProvider& aWapSmsProvider) |
66 | 630 |
{ |
631 |
LOGWAPPROT1("CWapSmsProviderWrite::NewL"); |
|
632 |
CWapSmsProviderWrite* self = new (ELeave) CWapSmsProviderWrite(aWapSmsProvider); |
|
633 |
CleanupStack::PushL(self); |
|
634 |
self->iMsgSender = CWapSapMessageSender::NewL(aWapSmsProvider.iProtocol->SmsProtocol(), &aWapSmsProvider); |
|
635 |
CleanupStack::Pop(self); |
|
636 |
return self; |
|
637 |
} // CWapSmsProviderWrite::NewL |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
638 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
639 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
640 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
641 |
* Constructor |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
642 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
643 |
CWapSmsProviderWrite::CWapSmsProviderWrite(CWapSmsProvider& aWapSmsProvider) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
644 |
:CActive(EPriorityStandard) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
645 |
,iWapSmsProvider(aWapSmsProvider) |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
646 |
{ |
66 | 647 |
LOGWAPPROT1("CWapSmsProviderWrite::CWapSmsProviderWrite()"); |
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
648 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
649 |
CActiveScheduler::Add(this); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
650 |
} // CWapSmsProviderWrite::CWapSmsProviderWrite |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
651 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
652 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
653 |
/** |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
654 |
* Destructor |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
655 |
*/ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
656 |
CWapSmsProviderWrite::~CWapSmsProviderWrite() |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
657 |
{ |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
658 |
Cancel(); |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
659 |
delete iMsgSender; |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
660 |
delete iDes; |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
661 |
} // CWapSmsProviderWrite::~CWapSmsProviderWrite |
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
662 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
663 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
664 |
void CWapSmsProviderWrite::Start(RMBufChain& aBufChain, TSockAddr& aAddr) |
66 | 665 |
{ |
666 |
LOGWAPPROT1("CWapSmsProviderWrite::Start"); |
|
667 |
iWapAddr = reinterpret_cast<TWapAddr&>(aAddr); |
|
668 |
delete iDes; |
|
669 |
iDes = NULL; |
|
670 |
TRAPD(err, (iDes = HBufC8::NewL(aBufChain.Length())) ); |
|
671 |
if(err == KErrNone) |
|
672 |
{ |
|
673 |
TPtr8 desBuf(iDes->Des()); |
|
674 |
desBuf.SetLength(aBufChain.Length()); |
|
675 |
aBufChain.CopyOut(desBuf, 0); |
|
676 |
// Logging migrated from CWapSmsProvider::GetData |
|
677 |
LOGSMSIF2("ESOCK READ: \"%S\"", iDes); |
|
678 |
LOGSMSIFHEXBUF(_L8("ESOCK READ"), *iDes); |
|
679 |
LOGSMSIFTIMESTAMP(); |
|
680 |
} |
|
681 |
aBufChain.Free(); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
682 |
|
66 | 683 |
TRequestStatus* status = &iStatus; |
684 |
User::RequestComplete(status, err); |
|
685 |
SetActive(); |
|
686 |
} // CWapSmsProviderWrite::Start |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
687 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
688 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
689 |
void CWapSmsProviderWrite::RunL() |
66 | 690 |
{ |
691 |
LOGWAPPROT1("CWapSmsProviderWrite::RunL"); |
|
692 |
User::LeaveIfError(iStatus.Int()); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
693 |
|
66 | 694 |
//no need to use cleanup stack |
695 |
CWapDatagram* datagram = CWapDatagram::NewL(*iDes); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
696 |
|
66 | 697 |
if (iWapSmsProvider.iDataCodingScheme == EWapSms7BitDCS) |
698 |
datagram->SetAlphabet(TSmsDataCodingScheme::ESmsAlphabet7Bit); |
|
699 |
else |
|
700 |
datagram->SetAlphabet(TSmsDataCodingScheme::ESmsAlphabet8Bit); |
|
701 |
||
702 |
if (iWapSmsProvider.iStatusReportScheme == EWapSmsTPSRR) |
|
703 |
{ |
|
704 |
datagram->SetStatusReportScheme(ETPSRRScheme); |
|
705 |
} |
|
706 |
else |
|
707 |
{ |
|
708 |
datagram->SetStatusReportScheme(EDefaultScheme); |
|
709 |
} |
|
710 |
||
711 |
TBuf<KMaxSockAddrSize> addrBuf; |
|
712 |
addrBuf.Copy(iWapAddr.WapAddress()); |
|
713 |
datagram->SetToAddress(addrBuf); |
|
714 |
TInt fromPort = iWapSmsProvider.iLocalAddress.WapPort(); |
|
715 |
datagram->SetPorts(fromPort, iWapAddr.WapPort()); |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
716 |
|
66 | 717 |
iMsgSender->SendDatagramL(datagram); // takes ownership of datagram |
718 |
} // CWapSmsProviderWrite::RunL |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
719 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
720 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
721 |
TInt CWapSmsProviderWrite::RunError(TInt aError) |
66 | 722 |
{ |
723 |
LOGWAPPROT1("CWapSmsProviderWrite::RunError"); |
|
724 |
iWapSmsProvider.Error(aError, MSocketNotify::EErrorSend); |
|
725 |
return KErrNone; |
|
726 |
} // CWapSmsProviderWrite::RunError |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
727 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
728 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
729 |
void CWapSmsProviderWrite::DoCancel() |
66 | 730 |
{ |
731 |
LOGWAPPROT1("CWapSmsProviderWrite::DoCancel"); |
|
732 |
TRequestStatus* status = &iStatus; |
|
733 |
User::RequestComplete(status, KErrCancel); |
|
734 |
} // CWapSmsProviderWrite::DoCancel |
|
0
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
735 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
736 |
|
3553901f7fa8
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
737 |
// EOF - WS_PRVDR.CPP |