/*
* Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Runtime.InteropServices;
using static Interop;
namespace Tizen.Multimedia.Remoting
{
///
/// Provides data for the event.
///
/// 9
public class WebRTCDataChannelMessageReceivedEventArgs : EventArgs
{
internal WebRTCDataChannelMessageReceivedEventArgs(DataChannelType type, IntPtr message)
{
Type = type;
if (type == DataChannelType.Strings)
{
Message = Marshal.PtrToStringAnsi(message);
}
else
{
NativeDataChannel.GetData(message, out IntPtr data, out ulong size).
ThrowIfFailed("Failed to get data");
Data = new byte[(int)size];
Marshal.Copy(data, Data, 0, (int)size);
}
}
///
/// Gets the data channel type.
///
/// The data channel type.
/// 9
public DataChannelType Type { get; }
///
/// Gets the string message from remote peer.
///
///
/// If is , this property is null.
///
/// The message.
/// 9
public string Message { get; }
#pragma warning disable CA1819 // the purpose of this member is to pass received data to user, no need to protect it from changes
///
/// Gets the byte data from remote peer.
///
///
/// If is , this property is null.
///
/// The message.
/// 9
public byte[] Data { get; }
#pragma warning restore CA1819
///
/// Returns a string that represents the current object.
///
/// A string that represents the current object.
/// 9
public override string ToString() => $"Channel type={Type}, Message={Message}";
}
}