Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.Notification / Tizen.Applications.Notifications / NotificationSafeHandle.cs
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 namespace Tizen.Applications.Notifications
18 {
19     using System;
20     using System.ComponentModel;
21     using System.Runtime.InteropServices;
22
23     [EditorBrowsable(EditorBrowsableState.Never)]
24     public sealed class NotificationSafeHandle : SafeHandle
25     {
26         [EditorBrowsable(EditorBrowsableState.Never)]
27         public NotificationSafeHandle()
28             : base(IntPtr.Zero, true)
29         {
30         }
31
32         internal NotificationSafeHandle(IntPtr existingHandle, bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
33         {
34             SetHandle(existingHandle);
35         }
36
37         /// <summary>
38         /// Gets a value that indicates whether the handle is invalid.
39         /// </summary>
40         [EditorBrowsable(EditorBrowsableState.Never)]
41         public override bool IsInvalid
42         {
43             get { return this.DangerousGetHandle() == IntPtr.Zero; }
44         }
45
46         protected override bool ReleaseHandle()
47         {
48             Interop.Notification.Destroy(this.handle);
49             this.SetHandle(IntPtr.Zero);
50             return true;
51         }
52     }
53 }