Beispiel #1
0
        /// <summary>
        /// 发送在线状态变化信息
        /// </summary>
        public void SendAbsenceMessage()
        {
            ulong options = 0ul;

            if (Config.IsInAbsenceMode)
            {
                options |= (ulong)Consts.Cmd_All_Option.Absence;
            }
            if (Config.EnableFileTransfer)
            {
                options |= (ulong)Define.Consts.Cmd_All_Option.FileAttach;
            }
            //插件
            if (Config.Services != null)
            {
                Config.Services.ProviderExecute(s => options |= s.GenerateClientFeatures());
            }

            string msg = Config.NickName;

            if (Config.IsInAbsenceMode)
            {
                msg += Config.AbsenceSuffix;
            }

            //广播
            MessageProxy.SendWithNoCheck(null, Consts.Commands.Br_Absence, options, msg, Config.GroupName);

            //单个通知
            options |= (ulong)Consts.Cmd_All_Option.DialUp;

            Config.KeepedHostList_Addr.ForEach(s => MessageProxy.SendByIp(new IPEndPoint(s, Config.Port), Consts.Commands.Br_Absence, options, msg, Config.GroupName));
        }
Beispiel #2
0
        /// <summary>
        /// 发送下线消息
        /// </summary>
        public void SendExitEntryMessage()
        {
            ulong options = 0ul;

            //广播
            MessageProxy.SendWithNoCheck(null, Consts.Commands.Br_Exit, options | (ulong)Consts.Cmd_Send_Option.BroadCast, Config.NickName, Config.GroupName);

            //单个通知
            options |= (ulong)Consts.Cmd_All_Option.DialUp;

            Config.KeepedHostList_Addr.ForEach(s => MessageProxy.SendByIp(new IPEndPoint(s, Config.Port), Consts.Commands.Br_Exit, options, Config.NickName, Config.GroupName));
        }
Beispiel #3
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="host">主机</param>
        /// <param name="remoteEndPoint">远程主机地址</param>
        /// <param name="cmd">命令</param>
        /// <param name="options">选项</param>
        /// <param name="msg">消息</param>
        /// <param name="extMsg">扩展消息</param>
        /// <param name="isBroadCast">是否是广播</param>
        /// <param name="sendCheck">是否需要确认收到</param>
        /// <param name="noAddList">是否忽略到主机列表</param>
        /// <param name="noLog">是否不记录日志</param>
        /// <param name="isAutoRet">是否是自动回复</param>
        /// <param name="isEncrypt">是否是加密信息</param>
        /// <param name="isSecret">是否需要阅读确认</param>
        /// <param name="noPopup">是否不自动弹出</param>
        /// <returns>发出去的消息包编号</returns>
        public ulong SendCommand(Host host, IPEndPoint remoteEndPoint, Consts.Commands cmd, ulong options, string msg, string extMsg, bool isBroadCast, bool sendCheck
                                 , bool noAddList, bool noLog, bool isAutoRet, bool isEncrypt, bool isSecret, bool noPopup)
        {
            if (isBroadCast)
            {
                options |= (ulong)Consts.Cmd_Send_Option.BroadCast;
            }
            if (sendCheck)
            {
                options |= (ulong)Consts.Cmd_Send_Option.SendCheck;
            }
            if (noAddList)
            {
                options |= (ulong)Consts.Cmd_Send_Option.NoAddList;
            }
            if (noLog)
            {
                options |= (ulong)Consts.Cmd_Send_Option.NoLog;
            }
            if (isAutoRet)
            {
                options |= (ulong)Consts.Cmd_Send_Option.AutoRet;
            }
            if (isEncrypt)
            {
                options |= (ulong)Consts.Cmd_All_Option.Encrypt;
            }
            if (isSecret)
            {
                options |= (ulong)Consts.Cmd_Send_Option.Secret;
            }
            if (noPopup)
            {
                options |= (ulong)Consts.Cmd_Send_Option.NoPopup;
            }

            if (sendCheck && host != null)
            {
                return(MessageProxy.SendWithCheck(host, cmd, options, msg, extMsg));
            }
            else
            {
                if (host == null)
                {
                    return(MessageProxy.SendByIp(remoteEndPoint, cmd, options, msg, extMsg));
                }
                else
                {
                    return(MessageProxy.SendWithNoCheck(host, cmd, options, msg, extMsg));
                }
            }
        }