Tizen 2.1 base
[external/enchant.git] / src / bindings / Enchant.Net / SafeBrokerHandle.cs
1 /* Copyright (c) 2007 Eric Scott Albright\r
2  * \r
3  * Permission is hereby granted, free of charge, to any person obtaining a copy\r
4  * of this software and associated documentation files (the "Software"), to deal\r
5  * in the Software without restriction, including without limitation the rights\r
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
7  * copies of the Software, and to permit persons to whom the Software is\r
8  * furnished to do so, subject to the following conditions:\r
9  * \r
10  * The above copyright notice and this permission notice shall be included in\r
11  * all copies or substantial portions of the Software.\r
12  * \r
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
19  * THE SOFTWARE.\r
20  */\r
21 \r
22 using System;\r
23 using System.Runtime.ConstrainedExecution;\r
24 using System.Runtime.InteropServices;\r
25 \r
26 namespace Enchant\r
27 {\r
28         internal sealed class SafeBrokerHandle : SafeHandle\r
29         {\r
30                 public SafeBrokerHandle()\r
31                         : base(IntPtr.Zero, true)\r
32                 {\r
33                 }\r
34 \r
35                 ///<summary>\r
36                 ///When overridden in a derived class, gets a value indicating whether the handle value is invalid.\r
37                 ///</summary>\r
38                 ///<returns>\r
39                 ///true if the handle is valid; otherwise, false.\r
40                 ///</returns>\r
41                 public override bool IsInvalid\r
42                 {\r
43                         get { return (handle == IntPtr.Zero); }\r
44                 }\r
45 \r
46                 ///<summary>\r
47                 ///When overridden in a derived class, executes the code required to free the handle.\r
48                 ///</summary>\r
49                 ///<returns>\r
50                 ///true if the handle is released successfully; otherwise, in the event of a catastrophic failure, false. In this case, it generates a ReleaseHandleFailed Managed Debugging Assistant.\r
51                 ///</returns>\r
52                 [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]\r
53                 protected override bool ReleaseHandle()\r
54                 {\r
55                         Bindings.enchant_broker_free(handle);\r
56                         return true;\r
57                 }\r
58         }\r
59 }