1 #region Copyright notice and license
2 // Copyright 2015 gRPC authors.
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 #endregion
16 using System;
17 using System.Runtime.InteropServices;
18 using System.Threading.Tasks;
19 
20 namespace Grpc.Core.Internal
21 {
22     /// <summary>
23     /// Owned char* object.
24     /// </summary>
25     internal class CStringSafeHandle : SafeHandleZeroIsInvalid
26     {
27         static readonly NativeMethods Native = NativeMethods.Get();
28 
CStringSafeHandle()29         private CStringSafeHandle()
30         {
31         }
32 
GetValue()33         public string GetValue()
34         {
35             return Marshal.PtrToStringAnsi(handle);
36         }
37 
ReleaseHandle()38         protected override bool ReleaseHandle()
39         {
40             Native.gprsharp_free(handle);
41             return true;
42         }
43     }
44 }
45