userlibandfileserver/fileserver/sfile/sf_plugin.h
changeset 247 d8d70de2bd36
parent 200 73ea206103e6
equal deleted inserted replaced
201:43365a9b78a3 247:d8d70de2bd36
    19 
    19 
    20 #define __SF_PLUGIN_H__
    20 #define __SF_PLUGIN_H__
    21 
    21 
    22 #include "message.h"
    22 #include "message.h"
    23 #include <f32fsys.h>
    23 #include <f32fsys.h>
    24 #include <F32plugin.h>
    24 #include <f32plugin.h>
    25 
    25 
    26 class CFsSyncMessageScheduler;
    26 class CFsSyncMessageScheduler;
    27 class CFsInternalRequest;
    27 class CFsInternalRequest;
    28 
    28 
    29 class TFsPluginThread
    29 class TFsPluginThread
    58 	static void DismountPlugin(CFsPluginFactory& aPluginFactory, TInt aPos);
    58 	static void DismountPlugin(CFsPluginFactory& aPluginFactory, TInt aPos);
    59 
    59 
    60 	static TInt InstallPluginFactory(CFsPluginFactory* aFactory,RLibrary aLib);
    60 	static TInt InstallPluginFactory(CFsPluginFactory* aFactory,RLibrary aLib);
    61 	static CFsPluginFactory* GetPluginFactory(const TDesC& aName);
    61 	static CFsPluginFactory* GetPluginFactory(const TDesC& aName);
    62 
    62 
    63 	static TInt NextPlugin(CFsPlugin*& aPlugin, CFsMessageRequest* aMsgRequest, TBool aLock, TBool aCheckCurrentOperation=ETrue);
    63 	static TInt NextPlugin(CFsPlugin*& aPlugin, CFsMessageRequest* aMsgRequest, TBool aCheckCurrentOperation=ETrue);
    64 	static TInt PrevPlugin(CFsPlugin*& aPlugin, CFsMessageRequest* aMsgRequest, TBool aLock);
    64 	static TInt PrevPlugin(CFsPlugin*& aPlugin, CFsMessageRequest* aMsgRequest);
    65 	static TInt InsertInPluginStack(CFsPlugin*& aPlugin,TInt aPos);
    65 	static TInt InsertInPluginStack(CFsPlugin*& aPlugin,TInt aPos);
    66 	static TInt IsInChain(TInt aUPos, TInt aPos,TInt aDrive, CFsPluginFactory* aPluginFactory);
    66 	static TInt IsInChain(TInt aUPos, TInt aPos,TInt aDrive, CFsPluginFactory* aPluginFactory);
    67 	static CFsPlugin* FindByUniquePosition(TInt aPos);
    67 	static CFsPlugin* FindByUniquePosition(TInt aPos);
    68 
    68 
    69 	static TInt InitPlugin(CFsPlugin& aPlugin, RLibrary aLibrary);
    69 	static TInt InitPlugin(CFsPlugin& aPlugin, RLibrary aLibrary);
    70 	static void TransferRequests(CPluginThread* aPluginThread);
    70 	static void TransferRequests(CPluginThread* aPluginThread);
    71 	static void CancelPlugin(CFsPlugin* aPlugin,CSessionFs* aSession);
    71 	static void CancelPlugin(CFsPlugin* aPlugin,CSessionFs* aSession);
    72 	static TInt ChainCount();
    72 	static TInt ChainCount();
    73 	static TInt Plugin(CFsPlugin*& aPlugin, TInt aPos);
    73 	static TInt Plugin(CFsPlugin*& aPlugin, TInt aPos);
    74 
    74 
    75 	static void LockChain();
    75 	static void ReadLockChain();
       
    76 	static void WriteLockChain();
    76 	static void UnlockChain();
    77 	static void UnlockChain();
    77 
    78 
    78 	static CFsPluginConn* CreatePluginConnL(TInt aUniquePosition, TUint aClientId);
    79 	static CFsPluginConn* CreatePluginConnL(TInt aUniquePosition, TUint aClientId);
    79 	static CFsPluginConn* GetPluginConnFromHandle(CSessionFs* aSession, TInt aHandle);
    80 	static CFsPluginConn* GetPluginConnFromHandle(CSessionFs* aSession, TInt aHandle);
    80 
    81 
    89 private:
    90 private:
    90 	static CFsObjectCon* iPluginFactories;
    91 	static CFsObjectCon* iPluginFactories;
    91 	static CFsObjectCon* iPluginConns;
    92 	static CFsObjectCon* iPluginConns;
    92 
    93 
    93 	static RPointerArray<CFsPlugin> iPluginChain;
    94 	static RPointerArray<CFsPlugin> iPluginChain;
    94 	static RFastLock iChainLock;
    95 	static RReadWriteLock iChainLock;
    95 
    96 
    96 	static CFsSyncMessageScheduler* iScheduler;
    97 	static CFsSyncMessageScheduler* iScheduler;
    97 
    98 
    98 	friend class RequestAllocator;
    99 	friend class RequestAllocator;
    99 	};
   100 	};