/// <summary>
        /// 独立信令 创建频道
        /// 该接口用户创建频道,同一时刻频道名互斥,不能重复创建。但如果频道名缺省,服务器会自动分配频道id。
        /// 对于频道在创建后如果没人加入,有效期2小时,当有成员加入后会自动延续频道有效期。当主动关闭频道或者最后一个成员退出后2小时后频道销毁。
        /// </summary>
        /// <param name="param">创建频道的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void CreateChannel(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            int    nSizeOfParam = Marshal.SizeOf(param);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_create_channel(param_ptr, NimSignalingCreateCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 独立信令 创建频道
        /// 该接口用户创建频道,同一时刻频道名互斥,不能重复创建。但如果频道名缺省,服务器会自动分配频道id。
        /// 对于频道在创建后如果没人加入,有效期2小时,当有成员加入后会自动延续频道有效期。当主动关闭频道或者最后一个成员退出后2小时后频道销毁。
        /// </summary>
        /// <param name="param">创建频道的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void SignalingCreate(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            NIMSignalingCreateParam_C param_c = SignalHelper.GetNativeNIMSignalingCreateParam(param);
            int    nSizeOfParam = Marshal.SizeOf(param_c);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param_c, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_create(param_ptr, NimSignalingCreateCb, user_ptr);
            }
            catch (Exception)
            {
                cb?.Invoke(NIMSignalingCreateResCode.kAbnormal, null);
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
        public static void CreateChannel2(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            SignalingNativeMethods.nim_signaling_create_channel2(ref param, NimSignalingCreateCb, user_ptr);
        }