1.1 --- a/epoc32/include/http/framework/cprotocolhandler.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,555 +0,0 @@
1.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 -// All rights reserved.
1.6 -// This component and the accompanying materials are made available
1.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.8 -// which accompanies this distribution, and is available
1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 -//
1.11 -// Initial Contributors:
1.12 -// Nokia Corporation - initial contribution.
1.13 -//
1.14 -// Contributors:
1.15 -//
1.16 -// Description:
1.17 -// please do not delete
1.18 -//
1.19 -//
1.20 -
1.21 -
1.22 -
1.23 -/**
1.24 - @file CProtocolHandler.h
1.25 - @warning : This file contains Rose Model ID comments
1.26 -*/
1.27 -
1.28 -#ifndef __CPROTOCOLHANDLER_H__
1.29 -#define __CPROTOCOLHANDLER_H__
1.30 -
1.31 -// System includes
1.32 -#include <e32base.h>
1.33 -#include <http/framework/httplogger.h>
1.34 -#include <http/mhttpfilter.h>
1.35 -#include <http/rhttpsession.h>
1.36 -
1.37 -// Forward declarations
1.38 -class CHeaderCodec;
1.39 -class CProtTransaction;
1.40 -class CSecurityPolicy;
1.41 -class MProtHandlerInterface;
1.42 -
1.43 -/**
1.44 -The ECom protocol handler plugin interface UID.
1.45 -@publishedAll
1.46 -@released
1.47 -*/
1.48 -const TUid KUidProtocolHandlerPluginInterface = {0x1000A449};
1.49 -
1.50 -//
1.51 -/**
1.52 -Defined active object priorities for the Protocol Handler
1.53 -@publishedAll
1.54 -@released
1.55 -*/
1.56 -const TInt KProtocolHandlerActivePriority = CActive::EPriorityStandard;
1.57 -/**
1.58 -Defined active object priorities for the Transaction
1.59 -@publishedAll
1.60 -@released
1.61 -*/
1.62 -const TInt KTransactionActivePriority = KProtocolHandlerActivePriority+1;
1.63 -
1.64 -
1.65 -//##ModelId=3C4C186A02A3
1.66 -class CProtocolHandler : public CActive, public MHTTPFilter
1.67 -/**
1.68 -An abstract protocol handler. Protocol handlers are required to
1.69 -act as the bridge between abstract representations of sessions, transactions and
1.70 -headers (the client side of the HTTP architecture) and specific comms transports
1.71 -(the network side of the architecture).
1.72 -
1.73 -Each instance of a concrete subclass of CProtocolHandler is associated
1.74 -with a specific client session, and hence with a particular choice of proxy type,
1.75 -and by implication, transport type. It is designed to appear like a filter in
1.76 -order to be placed at the end of a session's filter queue. This allows it to
1.77 -receive transaction-related events in the same way that any other filter
1.78 -(or indeed, the client) does. An active object, it may implement a queuing
1.79 -system for submitted transactions, according to the chosen internal service
1.80 -model.
1.81 -
1.82 -In order to divide the abstract functionality associated with handling the HTTP
1.83 -protocol handler from the specifics needed for a particular choice of transport,
1.84 -this class defines a number of pure virtual methods which allow it to defer
1.85 -transport-specific choices or mechamisms. These are mainly concerned with the
1.86 -service model (ie. allocation of transactions to objects that can handle them), the
1.87 -codec model (ie. on-demand encoding/decoding of HTTP header data) and general
1.88 -housekeeping (eg. instantiation and cleanup of objects at particular points in
1.89 -a transaction lifecycle).
1.90 -@publishedAll
1.91 -@released
1.92 -*/
1.93 - {
1.94 -public: // Methods
1.95 -
1.96 -/**
1.97 - Standard factory constructor. This is the ECOM interface class from
1.98 - which concrete protocol handlers are derived. The method queries
1.99 - ECOM for the protocol handler plugin that matches the protocol
1.100 - description passed in.
1.101 - @param aProtocol (in) The name of the protocol required.
1.102 - @param aSession (in) The HTTP session on which this protocol handler
1.103 - will be installed.
1.104 - @leave KErrNoMemory if there was not enough memory to create the object.
1.105 -*/
1.106 - //##ModelId=3C4C186B007E
1.107 - static CProtocolHandler* NewL(const TDesC8& aProtocol, RHTTPSession aSession);
1.108 -
1.109 -/**
1.110 - Intended Usage: Class destructor.
1.111 -*/
1.112 - //##ModelId=3C4C186B0075
1.113 - IMPORT_C virtual ~CProtocolHandler();
1.114 -
1.115 -/**
1.116 - Obtain the protocol handler's header codec.
1.117 - @return The header codec owned by this protocol handler, or NULL if one
1.118 - has not yet been created.
1.119 - @see CHeaderCodec
1.120 -*/
1.121 - //##ModelId=3C4C186B0074
1.122 - IMPORT_C CHeaderCodec* Codec() const;
1.123 -
1.124 -
1.125 -/**
1.126 - Get the Server Certificate for the current session.
1.127 - @return The certificate information or NULL if it is not available
1.128 -*/
1.129 - IMPORT_C const CCertificate* SessionServerCert();
1.130 -
1.131 -/**
1.132 - Get the Server Certificate for the specified transaction.
1.133 - @param aTransaction The transaction for which the certificate is requested
1.134 - @return The certificate information or NULL if it is not available
1.135 -*/
1.136 - IMPORT_C const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction);
1.137 -
1.138 -public: // Methods to be implemented in specific protocol handlers
1.139 -
1.140 -/**
1.141 - Intended Usage: Get the Server Certificate for the current session.
1.142 - @param aServerCert A TCertInfo which will be filled with the certificate information
1.143 - @return An error code. KErrNone if aServerCert has been completed, otherwise one of
1.144 - the system wide error codes
1.145 -*/
1.146 - virtual TInt SessionServerCert(TCertInfo& aServerCert) = 0;
1.147 -
1.148 -/**
1.149 - Intended Usage: Get the Server Certificate for the specified transaction.
1.150 - @param aServerCert A TCertInfo which will be filled with the certificate information
1.151 - @param aTransaction The transaction for which the certificate is requested
1.152 - @return An error code. KErrNone if aServerCert has been completed, otherwise one of
1.153 - the system wide error codes
1.154 -*/
1.155 - virtual TInt TransactionServerCert(TCertInfo& aServerCert, RHTTPTransaction aTransaction) = 0;
1.156 -
1.157 -public: // Methods from MHTTPFilterBase
1.158 -
1.159 -/**
1.160 - Intended Usage: Called when the filter's registration conditions are satisfied for events that
1.161 - occur on a transaction. Any Leaves must be handled by the appropriate MHFRunError.
1.162 - Note that this function is not allowed to leave if called with certain events.
1.163 - @see THTTPEvent
1.164 - @param aTransaction The transaction that the event has occurred on.
1.165 - @param aEvent aEvent The event that has occurred.
1.166 - @leave Standard Symbian OS error codes. e.g. KErrNoMemory.
1.167 - @see MHTTPFilterBase
1.168 -*/
1.169 - //##ModelId=3C4C186B0061
1.170 - IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
1.171 -
1.172 -/**
1.173 - Intended Usage: Called when the filters registration conditions are satisfied for events that occur
1.174 - on the session. Any leaves must be handled by the appropriate MHFRunError.
1.175 - @param aEvent The session event that has occured.
1.176 - @leave KErrNoMemory if an attempt to allocate memory has failed
1.177 - @leave KErrHttpCantResetRequestBody if the request body needed to be rewound by the client
1.178 - but it doesn't support this
1.179 - @see MHTTPFilterBase
1.180 -*/
1.181 - //##ModelId=3C4C186B0057
1.182 - IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
1.183 -
1.184 -/**
1.185 - Intended Usage: Called when RunL leaves from a transaction event. This works in the same
1.186 - way as CActve::RunError; return KErrNone if you have handled the error.
1.187 - If you don't completely handle the error, a panic will occur.
1.188 - @param aError The leave code that RunL left with.
1.189 - @param aTransaction The transaction that was being processed.
1.190 - @param aEvent The Event that was being processed.
1.191 - @return KErrNone if the error has been cancelled or the code
1.192 - of the continuing error otherwise.
1.193 - @see MHTTPFilterBase
1.194 -*/
1.195 - //##ModelId=3C4C186B0043
1.196 - IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
1.197 -
1.198 -/**
1.199 - Intended Usage: Called when MHFRunL leaves from a session event. This works in the same
1.200 - way as CActve::RunError. If you don't completely handle the error, a panic will occur.
1.201 - @param aError The leave code that RunL left with.
1.202 - @param aEvent The Event that was being processed.
1.203 - @return KErrNone if the error has been cancelled or the code
1.204 - of the continuing error otherwise.
1.205 - @see MHTTPFilterBase
1.206 -*/
1.207 - //##ModelId=3C4C186B0038
1.208 - IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
1.209 -
1.210 -public: // Methods from MHTTPFilter
1.211 -
1.212 -/**
1.213 - Intended Usage: Called when the filter is being removed from a session's filter queue.
1.214 - @param aSession The session it's being removed from
1.215 - @param aHandle The filter handle. Complex filters may need to
1.216 - refer to this to keep track of which particular registration is
1.217 - being unloaded.
1.218 - @see MHTTFilter
1.219 -*/
1.220 - //##ModelId=3C4C186B0025
1.221 - IMPORT_C virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle);
1.222 -
1.223 -/**
1.224 - Intended Usage: Called when the filter is being added to the session's filter queue.
1.225 - @param aSession The session it's being added to.
1.226 - @param aHandle The filter handle. Complex filters may need to keep
1.227 - track of this, for instance if generating events in response to
1.228 - external stimuli
1.229 - @see MHTTFilter
1.230 - */
1.231 - //##ModelId=3C4C186B001A
1.232 - IMPORT_C virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle aHandle);
1.233 -
1.234 -protected: // callbacks/methods for sub-classes
1.235 -
1.236 -/**
1.237 - Callback method for concrete protocol handler sub-classes to
1.238 - inform the base protocol handler that a transaction has completed.
1.239 - The concrete protocol handler must call this method in order to
1.240 - supply a completion event that will be sent to the client.
1.241 - In addition, the method allows the base protocol handler to do some
1.242 - queue management.
1.243 - @param aTrans (in) the completed transaction
1.244 - @param aEventStatus (in) an event to be sent back to the client along
1.245 - the filter queue
1.246 - @leave THTTPPanic::EInvalidFilterHandle if unable to send event.
1.247 - */
1.248 - //##ModelId=3C4C186B0010
1.249 - IMPORT_C void TransactionCompletedL(RHTTPTransaction aTrans, THTTPEvent aEventStatus);
1.250 -
1.251 -/**
1.252 - Obtain the number of currently active transactions
1.253 - @return The number of currently active transactions
1.254 - */
1.255 - //##ModelId=3C4C186B0006
1.256 - IMPORT_C TInt NumActiveTransactions() const;
1.257 -
1.258 -/**
1.259 - Callback method for concrete protocol handler sub-classes to
1.260 - inform the base protocol handler that a transaction has failed
1.261 - utterly. (i.e. the sub-class used aTrans.Fail().) The base protocol
1.262 - handler sets the transaction state to be cancelled.
1.263 - @param aTrans (in) the completed transaction
1.264 - */
1.265 - //##ModelId=3C4C186A03E5
1.266 - IMPORT_C void TransactionFailed(RHTTPTransaction aTrans);
1.267 -
1.268 -/**
1.269 - Completes this active object - allows the protocol handler to
1.270 - reevaluate the queue of pending transactions and service new ones
1.271 - if possible.
1.272 - */
1.273 - //##ModelId=3C4C186A03E4
1.274 - IMPORT_C void CompleteSelf();
1.275 -
1.276 -/**
1.277 - Searches the array of CProtTransaction objects to if the
1.278 - aTransaction object is wrapped by one of them. If one is found aProtTransaction is set to it
1.279 - @param aTransaction The transaction to search for.
1.280 - @param aProtTransaction Reference to a CProtTransaction which will be set to the
1.281 - CProtTransaction which wraps the RHTTPTransaction.
1.282 - @return If a CProtTransaction object is found, a positive value is
1.283 - returned that is the index to that object in the array. If
1.284 - no object is found, KErrNotFound is returned.
1.285 - */
1.286 - IMPORT_C TInt FindTransaction(RHTTPTransaction aTransaction, const CProtTransaction*& aProtTransaction) const;
1.287 -
1.288 -private: // methods to be implemented in specific protocol handlers
1.289 -
1.290 -/** Intended usage: Creates the specific type of codec required for a specific type
1.291 - of protocol handler.
1.292 -
1.293 - This must be implemented by a concrete protocol handler sub-class.
1.294 - */
1.295 - //##ModelId=3C4C186A03DC
1.296 - virtual void CreateCodecL() = 0;
1.297 -
1.298 -/** Intended Usage: Creates a representation of a client transaction to be used in the
1.299 - protocol handler. Since the protocol handler deals with the low-
1.300 - level data for a transaction as sent over a particular transport,
1.301 - an appropriate CProtTransaction-derived class is used that owns a
1.302 - CRxData and a CTxData to handle the low-level data.
1.303 -
1.304 - This must be implemented by a concrete protocol handler sub-class.
1.305 - @leave KErrNoMemory if there was not enough memory to create the object.
1.306 - create the object.
1.307 - @param aTransaction The RHTTPTransaction object associated with
1.308 - this CProtTransaction object.
1.309 - @return A pointer to a created CProtTransaction-derived class.
1.310 - @see CRxData
1.311 - @see CTxData
1.312 - */
1.313 - //##ModelId=3C4C186A03DA
1.314 - virtual CProtTransaction* CreateProtTransactionL(RHTTPTransaction aTransaction) = 0;
1.315 -
1.316 -/** Intended Usage: Attempt to service the transaction. This implies that the concrete
1.317 - protocol handler will allocate some transport resources to the
1.318 - transaction - which could fail if the protocol handler has hit an
1.319 - internal limit of resources or bandwidth.
1.320 - Implementations of this interface may leave with any of KErrHttpInvalidUri,
1.321 - KErrGeneral, KErrNoMemory
1.322 -
1.323 - This must be implemented by a concrete protocol handler sub-class.
1.324 - @param aTrans The pending protocol transaction object which is to be
1.325 - serviced.
1.326 - @return A flag that indicates if the transaction can be serviced immediately.
1.327 - */
1.328 - //##ModelId=3C4C186A03D0
1.329 - virtual TBool ServiceL(CProtTransaction& aTrans) = 0;
1.330 -
1.331 -/** Intended Usage: Called when the RHTTPTransaction object corresponding to aTrans has
1.332 - been closed by the client. This allows the concrete protocol handler
1.333 - to do any cleanup required for this particular transaction.
1.334 -
1.335 - Ownership of the CProtTransaction object is transferred back to the
1.336 - concrete protocol handler, which then has deletion responsibility
1.337 - for it. By the time this function has been called, the base
1.338 - protocol handler will have dequeued the transaction.
1.339 -
1.340 - The client's RHTTPTransaction will be closed when this function
1.341 - returns, so it is not possible to send events to the client during
1.342 - the function's execution.
1.343 -
1.344 - This must be implemented by a concrete protocol handler sub-class.
1.345 - @param aTrans (in) A pointer to the transaction about to be closed.
1.346 - */
1.347 - //##ModelId=3C4C186A03C6
1.348 - virtual void ClosedTransactionHook(CProtTransaction* aTrans) = 0;
1.349 -
1.350 -/** Intended Usage: Called when the RHTTPTransaction object corresponding to aTrans has
1.351 - been cancelled by the client or an intermediate filter. This allows
1.352 - the concrete protocol handler to do any cleanup and to perform the
1.353 - necessary actions for cancellation on its transport layer.
1.354 -
1.355 - This must be implemented by a concrete protocol handler sub-class.
1.356 - @param aTrans (in) A reference to the transaction being cancelled.
1.357 - */
1.358 - //##ModelId=3C4C186A03B3
1.359 - virtual void CancelTransactionHook(CProtTransaction& aTransaction) = 0;
1.360 -
1.361 -/** Intended Usage: Called to notify the concrete protocol handler that new request
1.362 - body data is available for transmission.
1.363 -
1.364 - This must be implemented by a concrete protocol handler sub-class.
1.365 - @param aTrans (in) A reference to the transaction whose request body
1.366 - has new data available.
1.367 - */
1.368 - //##ModelId=3C4C186A03A8
1.369 - virtual void NotifyNewRequestBodyPart(CProtTransaction& aTransaction) = 0;
1.370 -
1.371 -protected: // Methods inherited from CActive
1.372 -
1.373 -/** Intended Usage: Do some processing when a previous asynchronous request made by
1.374 - this object has completed.
1.375 - */
1.376 - //##ModelId=3C4C186A0377
1.377 - IMPORT_C virtual void RunL();
1.378 -
1.379 -/** Intended Usage: Do any cleanup required should RunL leave
1.380 - @param aError (in) The error code that RunL left with
1.381 - @return A final error code - KErrNone if the error was handled by this
1.382 - method.
1.383 - */
1.384 - //##ModelId=3C4C186A036E
1.385 - IMPORT_C virtual TInt RunError(TInt aError);
1.386 -
1.387 -/** Intended Usage: Cancel outstanding asynchronous requests that this object has made
1.388 - */
1.389 - //##ModelId=3C4C186A036D
1.390 - IMPORT_C virtual void DoCancel();
1.391 -
1.392 -protected: // Methods
1.393 -
1.394 -/**
1.395 - Constructs a protocol handler associated with the supplied HTTP
1.396 - client session.
1.397 - @param aSession (in) The session on which the new protocol handler will
1.398 - be installed.
1.399 - */
1.400 - IMPORT_C CProtocolHandler(RHTTPSession aSession);
1.401 -
1.402 -/**
1.403 - Second phase construction in which any necessary allocation is done
1.404 - Implementations of this interface may leave with KErrNoMemory
1.405 - @param aSession The HTTP session on which this protocol handler
1.406 - will be installed.
1.407 - */
1.408 - //##ModelId=3C4C186A036C
1.409 - IMPORT_C void ConstructL(RHTTPSession aSession);
1.410 -
1.411 -protected: // Attributes
1.412 -
1.413 - /** The session to which this protocol handler is dedicated
1.414 - */
1.415 - //##ModelId=3C4C186A033C
1.416 - RHTTPSession iSession;
1.417 -
1.418 - /** The codec used for this protocol handler (to be specialised in subclasses)
1.419 - */
1.420 - //##ModelId=3C4C186A032F
1.421 - CHeaderCodec* iCodec;
1.422 -
1.423 - /** HTTP logger handle (debug only)
1.424 - */
1.425 - __DECLARE_LOG
1.426 -
1.427 - /** An interface providing the security policy. This may be NULL if there is no security policy plugin */
1.428 - //##ModelId=3C4C186A031D
1.429 - CSecurityPolicy* iSecurityPolicy;
1.430 -
1.431 -private: // Methods
1.432 -
1.433 -/**
1.434 - Called after a client RHTTPTransaction::SubmitL(), this method
1.435 - enqueues the supplied client transaction. It checks to see if there
1.436 - already exists a CProtTransaction for this transaction. If there is
1.437 - and its state is ECancelled, then the associated request data is
1.438 - reset and the state changed to EPending. A CompleteSelf() is issued.
1.439 - In the case of an existing CProtTransaction that has not been
1.440 - cancelled, the submit event is ignored. If no CProtTransaction
1.441 - object existed, then one is created for the transaction and a
1.442 - CompleteSelf() is issued.
1.443 - @leave KErrHttpCantResetRequestBody if the request body data cannot
1.444 - be reset. KErrNoMemory if a new CProtTransaction cannot be
1.445 - created or added to the transaction queue.
1.446 - @param aTransaction The submitted transaction.
1.447 - @pre None
1.448 - @post If there is a new pending CProtTransaction object the protocol
1.449 - handler will have been self-completed (i.e. the RunL will be
1.450 - called).
1.451 - */
1.452 - //##ModelId=3C4C186A0362
1.453 - void SubmitTransactionL(RHTTPTransaction aTransaction);
1.454 -
1.455 -/**
1.456 - Sets the state of the CProtTransaction object for this
1.457 - transaction to ECancelled, and resets the object. This
1.458 - object can be reused if the transaction is resubmitted.
1.459 - @param RHTTPTransaction aTrans
1.460 - @pre A CProtTransaction object exists for this transaction.
1.461 - @post The state of the CProtTransaction object is set to ECancelled
1.462 - and it has been reset.
1.463 - */
1.464 - //##ModelId=3C4C186A0359
1.465 - void HandleCancelTransaction(RHTTPTransaction aTrans);
1.466 -
1.467 -/**
1.468 - Removes the CProtTransaction object for the transaction
1.469 - from the queue of CProtTransaction objects.
1.470 - @param RHTTPTransaction aTrans
1.471 - @pre A CProtTransaction object exists for this transaction.
1.472 - @post The CProtTransaction object has been removed from the queue.
1.473 - */
1.474 - //##ModelId=3C4C186A034F
1.475 - void HandleClosedTransaction(RHTTPTransaction aTrans);
1.476 -
1.477 -/**
1.478 - Searches the array of CProtTransaction objects to if the
1.479 - aTransaction object is wrapped by one of them.
1.480 - @param aTransaction The transaction to search for.
1.481 - @return If a CProtTransaction object is found, a positive value is
1.482 - returned that is the index to that object in the array. If
1.483 - no object is found, KErrNotFound is returned.
1.484 - */
1.485 - //##ModelId=3C4C186A0346
1.486 - TInt FindTransaction(RHTTPTransaction aTransaction) const;
1.487 -
1.488 -protected:
1.489 -/**
1.490 - Intended Usage: This is a mechanism for allowing future change to CProtocolHandler API
1.491 - without breaking BC.
1.492 - @param aInterfaceId the UID of the API function being called.
1.493 - @param aInterfacePtr reference to pointer to actual function implementation (in the derived class)
1.494 - */
1.495 - inline virtual void GetInterfaceL(TUid aInterfaceId, MProtHandlerInterface*& aInterfacePtr);
1.496 -
1.497 -public:
1.498 -/** Intended Usage: Reserve a slot in the v-table to preserve future BC
1.499 - */
1.500 - //##ModelId=3C4C186A0344
1.501 - inline virtual void Reserved2();
1.502 -
1.503 -
1.504 -private: // Attributes
1.505 -
1.506 - /** A list of transactions. Each transaction has a list state, e.g. pending,
1.507 - active, etc.
1.508 - */
1.509 - //##ModelId=3C4C186A0313
1.510 - RPointerArray<CProtTransaction> iTransactions;
1.511 -
1.512 - /** The transaction which is currently being serviced - used in RunError so
1.513 - we know which transaction caused RunL to leave.
1.514 - */
1.515 - //##ModelId=3C4C186A02FF
1.516 - RHTTPTransaction iCurrentTransaction;
1.517 -
1.518 - /** The destructor key UID indentification required by ECom
1.519 - */
1.520 - //##ModelId=3C4C186A02F5
1.521 - TUid iDtor_ID_Key;
1.522 - };
1.523 -
1.524 -
1.525 -
1.526 -/**
1.527 -Interface for adding to ProtocolHandler API
1.528 -@publishedAll
1.529 -@released
1.530 -*/
1.531 -
1.532 -const TInt KProtHandlerSessionServerCertUid = 0x1028180D;
1.533 -const TInt KProtHandlerTransactionServerCertUid = 0x1028180E;
1.534 -
1.535 -class MProtHandlerInterface
1.536 - {
1.537 -public:
1.538 - /**
1.539 - Intended Usage: Get the Server Certificate for the current session.
1.540 - @return The certificate information or NULL if it is not available
1.541 - */
1.542 - virtual const CCertificate* SessionServerCert() = 0;
1.543 -
1.544 - /**
1.545 - Intended Usage: Get the Server Certificate for the specified transaction.
1.546 - @param aTransaction The transaction for which the certificate is requested
1.547 - @return The certificate information or NULL if it is not available
1.548 - */
1.549 - virtual const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction) = 0;
1.550 - };
1.551 -
1.552 -inline void CProtocolHandler::GetInterfaceL(TUid, MProtHandlerInterface*&)
1.553 - {}
1.554 -
1.555 -inline void CProtocolHandler::Reserved2()
1.556 - {}
1.557 -
1.558 -#endif // __CPROTOCOLHANDLER_H__