Ejemplo n.º 1
0
        /// <summary>
        /// 注册机器人变更广播通知
        /// </summary>
        /// <param name="cb"></param>
        /// <param name="data"></param>
        public static void RegRobotChangedCb(RobotChangedCallback cb, object data = null)
        {
            NimUtility.DelegateBaton <RobotChangedCallback> baton = new NimUtility.DelegateBaton <RobotChangedCallback>();
            baton.Data   = data;
            baton.Action = cb;
            var ptr = baton.ToIntPtr();

            RobotNativeMethods.nim_robot_reg_changed_callback(null, RobotChangedCbFunc, ptr);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取指定机器人信息(同步接口,堵塞NIM内部线程)
        /// </summary>
        /// <param name="accid"></param>
        /// <returns></returns>
        public static RobotInfo QueryRobotByAccid(string accid)
        {
            RobotInfo robot  = null;
            var       ptr    = RobotNativeMethods.nim_robot_query_robot_by_accid_block(accid, null);
            var       obj    = NimUtility.Utf8StringMarshaler.GetInstance(null).MarshalNativeToManaged(ptr);
            var       result = obj as string;

            if (!string.IsNullOrEmpty(result))
            {
                robot = NimUtility.Json.JsonParser.Deserialize <RobotInfo>(result);
            }
            return(robot);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取全部机器人信息(同步接口,堵塞NIM内部线程)
        /// </summary>
        /// <returns></returns>
        public static List <RobotInfo> QueryAllRobots()
        {
            List <RobotInfo> robots = null;
            var ptr    = RobotNativeMethods.nim_robot_query_all_robots_block(null);
            var obj    = NimUtility.Utf8StringMarshaler.GetInstance(null).MarshalNativeToManaged(ptr);
            var result = obj as string;

            if (!string.IsNullOrEmpty(result))
            {
                var list = NimUtility.Json.JsonParser.Deserialize <List <string> >(result);
                if (list != null && list.Any())
                {
                    robots = new List <RobotInfo>();
                    foreach (var jstr in list)
                    {
                        var robot = RobotInfo.Deserialize(jstr);
                        robots.Add(robot);
                    }
                }
            }
            return(robots);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取全部机器人信息
        /// </summary>
        /// <param name="timetag">时间戳</param>
        /// <param name="cb"></param>
        public static void GetRobots(long timetag, GetRobotsDelegate cb)
        {
            var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            RobotNativeMethods.nim_robot_get_robots_async(timetag, null, _getRobotsCallback, ptr);
        }