Annotation of truecrypt/driver/fuse/fuseservice.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
                      3: 
                      4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
                      5:  in the file License.txt included in TrueCrypt binary and source code
                      6:  distribution packages.
                      7: */
                      8: 
                      9: #ifndef TC_HEADER_Driver_Fuse_FuseService
                     10: #define TC_HEADER_Driver_Fuse_FuseService
                     11: 
                     12: #include "Platform/Platform.h"
                     13: #include "Platform/Unix/Process.h"
                     14: #include "Volume/VolumeInfo.h"
                     15: #include "Volume/Volume.h"
                     16: 
                     17: namespace TrueCrypt
                     18: {
                     19: 
                     20:        class FuseService
                     21:        {
                     22:        protected:
                     23:                struct ExecFunctor : public ProcessExecFunctor
                     24:                {
                     25:                        ExecFunctor (shared_ptr <Volume> openVolume, VolumeSlotNumber slotNumber)
                     26:                                : MountedVolume (openVolume), SlotNumber (slotNumber)
                     27:                        {
                     28:                        }
                     29:                        virtual void operator() (int argc, char *argv[]);
                     30: 
                     31:                protected:
                     32:                        shared_ptr <Volume> MountedVolume;
                     33:                        VolumeSlotNumber SlotNumber;
                     34:                };
                     35: 
                     36:                friend class ExecFunctor;
                     37: 
                     38:        public:
                     39:                static bool CheckAccessRights ();
                     40:                static void Dismount ();
                     41:                static int ExceptionToErrorCode ();
                     42:                static const char *GetControlPath () { return "/control"; }
                     43:                static const char *GetVolumeImagePath ();
                     44:                static string GetDeviceType () { return "truecrypt"; }
                     45:                static uid_t GetGroupId () { return GroupId; }
                     46:                static DevicePath GetLoopDevice () { return OpenVolumeInfo.LoopDevice; }
                     47:                static uid_t GetUserId () { return UserId; }
                     48:                static shared_ptr <Buffer> GetVolumeInfo ();
                     49:                static uint64 GetVolumeSize ();
                     50:                static uint64 GetVolumeSectorSize () { return MountedVolume->GetSectorSize(); }
                     51:                static void Mount (shared_ptr <Volume> openVolume, VolumeSlotNumber slotNumber, const string &fuseMountPoint);
                     52:                static void ReadVolumeSectors (const BufferPtr &buffer, uint64 byteOffset);
                     53:                static void ReceiveLoopDevice (const ConstBufferPtr &buffer);
                     54:                static void SendLoopDevice (const DirectoryPath &fuseMountPoint, const DevicePath &loopDevice);
                     55:                static void WriteVolumeSectors (const ConstBufferPtr &buffer, uint64 byteOffset);
                     56: 
                     57:        protected:
                     58:                FuseService ();
                     59: 
                     60:                static VolumeInfo OpenVolumeInfo;
                     61:                static Mutex OpenVolumeInfoMutex;
                     62:                static shared_ptr <Volume> MountedVolume;
                     63:                static VolumeSlotNumber SlotNumber;
                     64:                static uid_t UserId;
                     65:                static gid_t GroupId;
                     66:        };
                     67: }
                     68: 
                     69: #endif // TC_HEADER_Driver_Fuse_FuseService

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.