equal
deleted
inserted
replaced
102 // ----------------------------------------------------------------------------- |
102 // ----------------------------------------------------------------------------- |
103 // |
103 // |
104 void CMSRPWriter::RequestSendL(MMSRPWriterObserver& aMsg) |
104 void CMSRPWriter::RequestSendL(MMSRPWriterObserver& aMsg) |
105 { |
105 { |
106 MSRPLOG( "CMSRPWriter::RequestSendL enter" ) |
106 MSRPLOG( "CMSRPWriter::RequestSendL enter" ) |
|
107 // making sure the msg is not already in queue |
|
108 for ( TInt i = 0; i < iSendQueue.Count(); i++ ) |
|
109 { |
|
110 if ( iSendQueue[ i ] == &aMsg ) |
|
111 { |
|
112 // already included |
|
113 return; |
|
114 } |
|
115 } |
|
116 |
107 iSendQueue.AppendL(&aMsg); |
117 iSendQueue.AppendL(&aMsg); |
108 if(!IsActive()) |
118 if(!IsActive()) |
109 { |
119 { |
110 /*avoid invoking send in other active object context*/ |
120 /*avoid invoking send in other active object context*/ |
111 //SendL |
121 //SendL |
115 } |
125 } |
116 MSRPLOG( "CMSRPWriter::RequestSendL exit" ) |
126 MSRPLOG( "CMSRPWriter::RequestSendL exit" ) |
117 } |
127 } |
118 |
128 |
119 // ----------------------------------------------------------------------------- |
129 // ----------------------------------------------------------------------------- |
|
130 // CMSRPWriter::CancelSendingL |
|
131 // ----------------------------------------------------------------------------- |
|
132 // |
|
133 void CMSRPWriter::CancelSendingL( const MMSRPWriterObserver* aMsg ) |
|
134 { |
|
135 MSRPLOG( "CMSRPWriter::CancelSendingL enter" ) |
|
136 if ( iSendQueue.Count() ) |
|
137 { |
|
138 if ( iSendQueue[ 0 ] == aMsg ) |
|
139 { |
|
140 if( iWriteIssued ) |
|
141 { |
|
142 MSRPLOG( "CMSRPWriter::CancelSendingL Write Canceled" ) |
|
143 iSocket.CancelWrite(); |
|
144 } |
|
145 } |
|
146 } |
|
147 } |
|
148 |
|
149 // ----------------------------------------------------------------------------- |
120 // CMSRPWriter::CancelReceiving |
150 // CMSRPWriter::CancelReceiving |
121 // ----------------------------------------------------------------------------- |
151 // ----------------------------------------------------------------------------- |
122 // |
152 // |
123 /*void CMSRPWriter::CancelReceiving() |
153 /*void CMSRPWriter::CancelReceiving() |
124 { |
154 { |
147 { |
177 { |
148 iWriteIssued = FALSE; |
178 iWriteIssued = FALSE; |
149 MMSRPWriterObserver::TMsgStatus msgState = MMSRPWriterObserver::EComplete; |
179 MMSRPWriterObserver::TMsgStatus msgState = MMSRPWriterObserver::EComplete; |
150 msgState = iSendQueue[0]->WriteDoneL(status); |
180 msgState = iSendQueue[0]->WriteDoneL(status); |
151 |
181 |
152 if(msgState != MMSRPWriterObserver::EPending) |
182 if( msgState != MMSRPWriterObserver::EPending && |
|
183 msgState != MMSRPWriterObserver::ESendingReport ) |
153 { |
184 { |
154 MMSRPWriterObserver* obs = iSendQueue[0]; |
185 MMSRPWriterObserver* obs = iSendQueue[0]; |
155 iSendQueue.Remove(0); |
186 iSendQueue.Remove(0); |
156 if(msgState == MMSRPWriterObserver::EInterrupted) |
187 if(msgState == MMSRPWriterObserver::EInterrupted) |
157 iSendQueue.AppendL(obs); |
188 iSendQueue.AppendL(obs); |
184 // |
215 // |
185 void CMSRPWriter::SendL() |
216 void CMSRPWriter::SendL() |
186 { |
217 { |
187 TBool interruptSend = FALSE; |
218 TBool interruptSend = FALSE; |
188 |
219 |
189 //while(iSendQueue.Count()) |
|
190 if(iSendQueue.Count()) |
220 if(iSendQueue.Count()) |
191 { |
221 { |
192 MMSRPWriterObserver::TWriteStatus ret = MMSRPWriterObserver::EMsrpSocketWrite; |
222 MMSRPWriterObserver::TWriteStatus ret = MMSRPWriterObserver::EMsrpSocketWrite; |
193 TPtrC8 data(NULL,0); |
|
194 |
223 |
195 if(iSendQueue.Count()>1) |
224 if(iSendQueue.Count()>1) |
196 interruptSend = TRUE; |
225 interruptSend = TRUE; |
197 |
226 |
198 ret = iSendQueue[0]->GetSendBufferL(data, interruptSend); |
227 const TDesC8& writeBuffer = iSendQueue[0]->GetSendBufferL( ret, interruptSend); |
199 |
228 |
200 Deque(); |
229 Deque(); |
201 CActiveScheduler::Add(this); |
230 CActiveScheduler::Add(this); |
202 SetActive(); |
231 SetActive(); |
203 |
232 |
204 if( ret == MMSRPWriterObserver::EMsrpSocketWrite ) //KErrNone == 0 |
233 if( ret == MMSRPWriterObserver::EMsrpSocketWrite ) //KErrNone == 0 |
205 { |
234 { |
206 iSocket.Write( data, iStatus ); |
235 iSocket.Write( writeBuffer, iStatus ); |
207 iWriteIssued = TRUE; |
236 iWriteIssued = TRUE; |
208 } |
237 } |
209 else if (ret == MMSRPWriterObserver::EMsrpAvoidSocketWrite)//EAvoidSocketWrite |
238 else if (ret == MMSRPWriterObserver::EMsrpAvoidSocketWrite)//EAvoidSocketWrite |
210 { |
239 { |
211 TRequestStatus* status = &iStatus; |
240 TRequestStatus* status = &iStatus; |