/* * 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}"; } }