From c46f4acfd17966601f18775285c55c191dd815bc Mon Sep 17 00:00:00 2001 From: Segwon Date: Tue, 11 Jul 2017 10:29:50 +0900 Subject: [PATCH] Add to two C# API about native internal API. - conv_payload_set_binary() - conv_payload_get_binary() Signed-off-by: Segwon Change-Id: I600d4e501647bdc514fbe60616139fb421fbee42 --- .../Interop/Interop.Conv.Payload.cs | 16 +++++--- src/Tizen.Convergence/Tizen.Convergence/Payload.cs | 48 ++++++++++++++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/Tizen.Convergence/Interop/Interop.Conv.Payload.cs b/src/Tizen.Convergence/Interop/Interop.Conv.Payload.cs index d98300c..0f20562 100755 --- a/src/Tizen.Convergence/Interop/Interop.Conv.Payload.cs +++ b/src/Tizen.Convergence/Interop/Interop.Conv.Payload.cs @@ -33,7 +33,11 @@ internal static partial class Interop [DllImport(Libraries.Convergence, EntryPoint = "conv_payload_get_byte")] internal static extern int GetByte(ConvPayloadHandle /* conv_payload_h */ handle, string key, out int length, out IntPtr value); + [DllImport(Libraries.Convergence, EntryPoint = "conv_payload_set_binary")] + internal static extern int SetBinary(ConvPayloadHandle /* conv_payload_h */ handle, int length, byte[] value); + [DllImport(Libraries.Convergence, EntryPoint = "conv_payload_get_binary")] + internal static extern int GetBinary(ConvPayloadHandle /* conv_payload_h */ handle, out int length, out IntPtr value); } internal class ConvPayloadHandle : TizenSafeHandle @@ -60,12 +64,12 @@ internal static partial class Interop { if (_ownsHandle && handle != IntPtr.Zero) { - var err = ConvPayload.Destroy(this.handle); - if (err != (int)ConvErrorCode.None) - { - Log.Error(ErrorFactory.LogTag, "Failed to destroy conv payload handle"); - throw ErrorFactory.GetException(err); - } + var err = ConvPayload.Destroy(this.handle); + if (err != (int)ConvErrorCode.None) + { + Log.Error(ErrorFactory.LogTag, "Failed to destroy conv payload handle"); + throw ErrorFactory.GetException(err); + } } } } diff --git a/src/Tizen.Convergence/Tizen.Convergence/Payload.cs b/src/Tizen.Convergence/Tizen.Convergence/Payload.cs index 1c02801..1d80197 100755 --- a/src/Tizen.Convergence/Tizen.Convergence/Payload.cs +++ b/src/Tizen.Convergence/Tizen.Convergence/Payload.cs @@ -97,6 +97,30 @@ namespace Tizen.Convergence } } + + /// + /// Sets binary to payload. + /// + /// The binary to set + /// http://tizen.org/feature/convergence.d2d + /// Thrown if the required feature is not supported. + /// Thrown if the arguments passed are null + public void Set(byte[] value) + { + if (value == null) + { + throw new ArgumentNullException(); + } + + int ret = 0; + ret = Interop.ConvPayload.SetBinary(_payloadHandle, value.Length, value); + if (ret != (int)ConvErrorCode.None) + { + Log.Error(ErrorFactory.LogTag, "Failed to add binary to payload"); + throw ErrorFactory.GetException(ret); + } + } + /// /// Gets the value of the key from payload /// @@ -159,6 +183,30 @@ namespace Tizen.Convergence } /// + /// Gets binary from payload + /// + /// The result value + /// http://tizen.org/feature/convergence.d2d + /// Thrown if the required feature is not supported. + public void Get(out byte[] value) + { + int ret = 0; + IntPtr byteArrayPtr; + int byteArraySize; + ret = Interop.ConvPayload.GetBinary(_payloadHandle, out byteArraySize, out byteArrayPtr); + if (ret != (int)ConvErrorCode.None) + { + Log.Error(ErrorFactory.LogTag, "Failed to get binary from payload"); + throw ErrorFactory.GetException(ret); + } + + byte[] byteArray = new byte[byteArraySize]; + Marshal.Copy(byteArrayPtr, byteArray, 0, byteArraySize); + value = byteArray; + Interop.Libc.Free(byteArrayPtr); + } + + /// /// The dispose method /// public void Dispose() -- 2.7.4