using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JiShe.CollectBus.Common.Consts
{
    public class ProtocolConst
    {
        public const string SubscriberGroup = "jishe.collectbus";
        /// <summary>
        /// 心跳下行消息主题
        /// </summary>
        public const string SubscriberHeartbeatIssuedEventName = "issued.heartbeat.event";
        /// <summary>
        /// 登录下行消息主题
        /// </summary>
        public const string SubscriberLoginIssuedEventName = "issued.login.event";

        /// <summary>
        /// 上行消息主题,测试使用
        /// </summary>
        public const string SubscriberReceivedEventName = "received.event";

        /// <summary>
        /// 心跳上行消息主题
        /// </summary>
        public const string SubscriberHeartbeatReceivedEventName = "received.heartbeat.event";
        /// <summary>
        /// 登录上行消息主题
        /// </summary>
        public const string SubscriberLoginReceivedEventName = "received.login.event";

        #region 电表消息主题
        /// <summary>
        /// 1分钟采集电表数据下行消息主题
        /// </summary>
        public const string AmmeterSubscriberWorkerOneMinuteIssuedEventName = "issued.auto.one.ammeter.event";
        /// <summary>
        /// 5分钟采集电表数据下行消息主题
        /// </summary>
        public const string AmmeterSubscriberWorkerFiveMinuteIssuedEventName = "issued.auto.five.ammeter.event";
        /// <summary>
        /// 15分钟采集电表数据下行消息主题
        /// </summary>
        public const string AmmeterSubscriberWorkerFifteenMinuteIssuedEventName = "issued.auto.fifteen.ammeter.event";

        /// <summary>
        /// 其他采集数据下行消息主题，日冻结，月冻结、集中器版本号、SIM卡号、定时校时等
        /// </summary>
        public const string AmmeterSubscriberWorkerOtherIssuedEventName = "issued.auto.other.ammeter.event";
         
        /// <summary>
        /// 电表自动阀控
        /// </summary>
        public const string AmmeterSubscriberWorkerAutoValveControlIssuedEventName = "issued.auto.control.ammeter.event";

        /// <summary>
        /// 电表手动阀控
        /// </summary>
        public const string AmmeterSubscriberWorkerManualValveControlIssuedEventName = "issued.manual.control.ammeter.event";

        /// <summary>
        /// 电表手动抄读
        /// </summary>
        public const string AmmeterSubscriberWorkerManualValveReadingIssuedEventName = "issued.manual.reading.ammeter.event";

        /// <summary>
        /// 采集电表数据重试下行消息主题
        /// </summary>
        public const string AmmeterSubscriberWorkerRetryEventName = "issued.retry.ammeter.event";

        #endregion

        #region 水表消息主题
        /// <summary>
        /// 水表数据下行消息主题，由于水表采集频率不高，所以一个主题就够
        /// </summary>
        public const string WatermeterSubscriberWorkerAutoReadingIssuedEventName = "issued.auto.reading.watermeter.event";

        /// <summary>
        /// 水表自动阀控
        /// </summary>
        public const string WatermeterSubscriberWorkerAutoValveControlIssuedEventName = "issued.auto.control.watermeter.event";

        /// <summary>
        /// 水表手动阀控
        /// </summary>
        public const string WatermeterSubscriberWorkerManualValveControlIssuedEventName = "issued.manual.control.watermeter.event";

        /// <summary>
        /// 水表手动抄读
        /// </summary>
        public const string WatermeterSubscriberWorkerManualValveReadingIssuedEventName = "issued.manual.reading.watermeter.event";
        #endregion

        /// <summary>
        /// AFN上行主题格式
        /// </summary>
        public const string AFNTopicNameFormat = "received.afn{0}h.event";

        /// <summary>
        /// AFN00H上行主题格式
        /// </summary>
        public const string SubscriberAFN00HReceivedEventNameTemp = "received.afn00h.event";

        /// <summary>
        /// AFN01H上行主题格式
        /// </summary>
        public const string SubscriberAFN01HReceivedEventNameTemp = "received.afn01h.event";

        /// <summary>
        /// AFN02H上行主题格式
        /// </summary>
        public const string SubscriberAFN02HReceivedEventNameTemp = "received.afn02h.event";

        /// <summary>
        /// AFN03H上行主题格式
        /// </summary>
        public const string SubscriberAFN03HReceivedEventNameTemp = "received.afn03h.event";

        /// <summary>
        /// AFN04H上行主题格式
        /// </summary>
        public const string SubscriberAFN04HReceivedEventNameTemp = "received.afn04h.event";

        /// <summary>
        /// AFN05H上行主题格式
        /// </summary>
        public const string SubscriberAFN05HReceivedEventNameTemp = "received.afn05h.event";

        /// <summary>
        /// AFN09H上行主题格式
        /// </summary>
        public const string SubscriberAFN09HReceivedEventNameTemp = "received.afn09h.event";

        /// <summary>
        /// AFN0AH上行主题格式
        /// </summary>
        public const string SubscriberAFN0AHReceivedEventNameTemp = "received.afn10h.event";

        /// <summary>
        /// AFN0BH上行主题格式
        /// </summary>
        public const string SubscriberAFN0BHReceivedEventNameTemp = "received.afn11h.event";

        /// <summary>
        /// AFN0CH上行主题格式
        /// </summary>
        public const string SubscriberAFN0CHReceivedEventNameTemp = "received.afn12h.event";

        /// <summary>
        /// AFN0DH上行主题格式
        /// </summary>
        public const string SubscriberAFN0DHReceivedEventNameTemp = "received.afn13h.event";

        /// <summary>
        /// AFN0EH上行主题格式
        /// </summary>
        public const string SubscriberAFN0EHReceivedEventNameTemp = "received.afn14h.event";

        /// <summary>
        /// AFN10H上行主题格式
        /// </summary>
        public const string SubscriberAFN10HReceivedEventNameTemp = "received.afn16h.event";


        /// <summary>
        /// 测试主题格式
        /// </summary>
        public const string TESTTOPIC = "test-topic";
    }
}
