Exemplo n.º 1
0
        /// <summary>
        /// 独立信令 接受邀请接口
        /// 不开自动加入开关:该接口只接受邀请并告知邀请者,并同步通知自己的其他在线设备,但不会主动加入频道,需要单独调用加入接口
        /// 打开自动加入开关:该接口为组合接口,等同于先调用接受邀请,成功后再加入频道。
        /// 该接口在打开自动加入开关后是组合接口,对应的通知会有2个,接收邀请通知和加入通知
        /// </summary>
        /// <param name="param">接受邀请的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs,其中opt_res_param在打开自动加入开关,并成功后有效</param>
        public static void Accept(NIMSignalingAcceptParam param, InviteDelegate 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_accept(param_ptr, NimSignalingAcceptCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 独立信令 接受邀请接口
        /// 不开自动加入开关:该接口只接受邀请并告知邀请者,并同步通知自己的其他在线设备,但不会主动加入频道,需要单独调用加入接口
        /// 打开自动加入开关:该接口为组合接口,等同于先调用接受邀请,成功后再加入频道。
        /// 该接口在打开自动加入开关后是组合接口,对应的通知会有2个,接收邀请通知和加入通知
        /// </summary>
        /// <param name="param">接受邀请的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs,其中opt_res_param在打开自动加入开关,并成功后有效</param>
        public static void Accept(NIMSignalingAcceptParam param, NimSignalingOptAcceptHandler cb)
        {
            NIMSignalingAcceptParam_C param_c = SignalHelper.GetNativeNIMSignalingAcceptParam(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_accept(param_ptr, NimSignalingAcceptCb, user_ptr);
            }
            catch (Exception)
            {
                cb?.Invoke(NIMSignalingRejectOrAcceptResCode.kAbnormal, null);
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }