1 using System;
 2 
 3 namespace cmsx.kernel
 4 {
 5     public ulong hostFileCompletionKey = 0u;
 6 
 7     public class HostFile
 8     {
 9         public HostFile(const string& hostFilePath_ulong key_bool randomAccess) : hostFilePath(hostFilePath_)fileHandle(null)key(key_)
10         {
11             if (System.IO.File.Exists(hostFilePath))
12             {
13                 fileHandle = OsOpenHostFile(hostFilePath.Chars()randomAccess);
14             }
15             else
16             {
17                 fileHandle = OsCreateHostFile(hostFilePath.Chars()randomAccess);
18             }
19             if (fileHandle == null)
20             {
21                 throw Exception("error opening host file '" + hostFilePath + "': open failed");
22             }
23         }
24         public ~HostFile()
25         {
26             if (fileHandle != null)
27             {
28                 OsCloseHostFile(fileHandle);
29             }
30         }
31         public inline nothrow const string& GetHostFilePath() const
32         {
33             return hostFilePath;
34         }
35         public inline nothrow void* GetFileHandle() const
36         {
37             return fileHandle;
38         }
39         public inline nothrow ulong Key() const
40         {
41             return key;
42         }
43         private string hostFilePath;
44         private void* fileHandle;
45         private ulong key;
46     }
47 }