00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __CMTPEXAMPLEDPREQUESTPROCESSOR_H__
00018 #define __CMTPEXAMPLEDPREQUESTPROCESSOR_H__
00019
00020 #include <e32base.h>
00021 #include <mtp/mtpdataproviderapitypes.h>
00022 #include <mtp/mtpprotocolconstants.h>
00023 #include <mtp/tmtptyperesponse.h>
00024 #include <mtp/tmtptypenull.h>
00025
00026
00027 class TMTPTypeRequest;
00028 class CMTPDataProviderPlugin;
00029 class MMTPDataProviderFramework;
00030 class TMTPTypeEvent;
00031
00032 struct TMTPRequestElementInfo;
00033
00039 class MMTPExampleDpRequestProcessor
00040 {
00041 public:
00042
00043
00044
00045
00046
00047
00048 virtual TBool HandleRequestL(const TMTPTypeRequest& aRequest, TMTPTransactionPhase aPhase) = 0;
00049
00050
00051
00052
00053
00054 virtual void HandleEventL(const TMTPTypeEvent& aEvent) = 0;
00055
00056
00057
00058
00059
00060
00061
00062 virtual TBool Match(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection) const = 0;
00063
00064
00065
00066
00067
00068
00069
00070 virtual TBool Match(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection) const = 0;
00071
00072
00073
00074
00075
00076 virtual const TMTPTypeRequest& Request() const = 0;
00077
00078
00079
00080
00081
00082 virtual MMTPConnection& Connection() const = 0;
00083
00084
00085
00086
00087
00088 virtual TUint32 SessionId() = 0;
00089
00090
00091
00092 virtual void Release() = 0;
00093
00094 };
00095
00099 typedef MMTPExampleDpRequestProcessor* (*TMTPRequestProcessorCreateFunc)(
00100 MMTPDataProviderFramework& aFramework,
00101 MMTPConnection& aConnection);
00102
00106 typedef struct
00107 {
00108 TUint16 iOperationCode;
00109 TMTPRequestProcessorCreateFunc iCreateFunc;
00110 }TMTPRequestProcessorEntry;
00111
00112 class CMTPExampleDpRequestProcessor : public MMTPExampleDpRequestProcessor
00113 {
00114 protected:
00115 CMTPExampleDpRequestProcessor(
00116 MMTPDataProviderFramework& aFramework,
00117 MMTPConnection& aConnection,
00118 TInt aElementCount,
00119 const TMTPRequestElementInfo* aElements);
00120 virtual ~CMTPExampleDpRequestProcessor();
00121
00122 protected:
00123 void SendResponseL(TMTPResponseCode aResponseCode, TInt aParameterCount = 0, TUint32* aParams = NULL);
00124 void CompleteRequestL();
00125
00126 protected:
00127 virtual TBool HandleRequestL(const TMTPTypeRequest& aRequest, TMTPTransactionPhase aPhase);
00128 virtual void HandleEventL(const TMTPTypeEvent& aEvent);
00129 virtual void Release();
00130 virtual TBool Match(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection) const;
00131 virtual TBool Match(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection) const;
00132 virtual const TMTPTypeRequest& Request() const;
00133 virtual MMTPConnection& Connection() const;
00134 virtual TUint32 SessionId();
00135
00136
00137 protected:
00138 virtual TBool DoHandleResponsePhaseL();
00139 virtual TBool DoHandleCompletingPhaseL();
00140
00141
00142
00143
00144 virtual void ServiceL() = 0;
00145
00146 private:
00147 void ExtractSessionTransactionId();
00148
00149 protected:
00150 MMTPDataProviderFramework& iFramework;
00151 const TMTPTypeRequest* iRequest;
00152 MMTPConnection& iConnection;
00153 TMTPTypeResponse iResponse;
00154 TBool iCancelled;
00155 TInt iElementCount;
00156 const TMTPRequestElementInfo* iElements;
00157 TUint32 iSessionId;
00158 TUint32 iTransactionCode;
00159
00160 private:
00161 TMTPResponseCode iResponseCode;
00162 };
00163
00164 #endif // __CMTPEXAMPLEDPREQUESTPROCESSOR_H__
00165