public ChannelInfo(uint id, VideoMode vm, ChannelStatus cs, string activeClip)
 {
     this.ID         = id;
     this.VideoMode  = vm;
     this.Status     = cs;
     this.ActiveClip = activeClip;
 }
        void AfterActionStatusChanged(EpicsChannel sender, ChannelStatus newStatus)
        {
            List <Action <EpicsChannel> > todo = new List <Action <EpicsChannel> >();

            lock (AfterAction)
            {
                //Console.WriteLine("After Action Status Changed");
                this.StatusChanged -= AfterActionStatusChanged;
                if (Disposed)
                {
                    return;
                }
                if (AfterAction == null)
                {
                    return;
                }

                todo = AfterAction.ToList();
                AfterAction.Clear();
            }

            foreach (var i in todo)
            {
                i(this);
            }
        }
Esempio n. 3
0
        public ChannelService(IServiceProvider serviceProvider)
        {
            //_serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            _cancellationSource = new CancellationTokenSource();

            _appConfig     = serviceProvider.GetRequiredService <IAppSettingsConfig>();
            _logger        = serviceProvider.GetRequiredService <ILogger>();
            _database      = serviceProvider.GetRequiredService <IDatabase>();
            _dataAdapter   = serviceProvider.GetRequiredService <IChannelDataAdapter>();
            _scanner       = serviceProvider.GetRequiredService <IMessageScanner>();
            _receiver      = serviceProvider.GetRequiredService <IMessageReceiver>();
            _channelStatus = serviceProvider.GetRequiredService <ChannelStatus>();
            //_publisher = new MessagePublisher(this);

            _scanner.NewMessages           += Scanner_NewMessages;
            _channelStatus.PropertyChanged += ChannelStatus_Changed;

            _mainChannelSettings = _appConfig.MainChannelSettings();
            _channelSettings     = _appConfig.ChannelSettings();
            _databaseSettings    = _appConfig.DatabaseSettings();
            _messageSettings     = _appConfig.MessageSettings();
            //_serviceSettings = _appConfig.ServiceSettings();

            this.ProcessId   = Process.GetCurrentProcess().Id;
            this.VirtAddress = _mainChannelSettings.VirtAddress;
        }
Esempio n. 4
0
        public override IChannel GetChannel(int chnlid, ChannelType chnlType, ChannelStatus chnlStatus)
        {
            if (CanWork)
            {
                if (chnlid != -1 && Channels[chnlid].ChannelType == chnlType && Channels[chnlid].CurrentStatus == chnlStatus)
                {
                    return(Channels[chnlid]);
                }

                // 直接返回指定通道标识的通道
                if (chnlid != -1 && chnlStatus == ChannelStatus.IDLE)
                {
                    return(chnlid < ChannelCount ? Channels[chnlid] : null);
                }

                // 获取指定类型及状态的通道
                foreach (IChannel channle in Channels)
                {
                    if (channle.ChannelType == chnlType && channle.CurrentStatus == chnlStatus)
                    {
                        return(channle);
                    }
                }
            }
            return(null);
        }
Esempio n. 5
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (summary_ != null)
            {
                hash ^= Summary.GetHashCode();
            }
            if (processStatus_ != null)
            {
                hash ^= ProcessStatus.GetHashCode();
            }
            if (channelStatus_ != null)
            {
                hash ^= ChannelStatus.GetHashCode();
            }
            if (resourceStatus_ != null)
            {
                hash ^= ResourceStatus.GetHashCode();
            }
            if (otherStatus_ != null)
            {
                hash ^= OtherStatus.GetHashCode();
            }
            return(hash);
        }
Esempio n. 6
0
 public ChannelInfo(int id, VideoMode vm, ChannelStatus cs, string activeClip)
 {
     ID         = id;
     VideoMode  = vm;
     Status     = cs;
     ActiveClip = activeClip;
 }
Esempio n. 7
0
        void AfterConnectedStatusChanged(Channel sender, ChannelStatus newStatus)
        {
            if (newStatus != ChannelStatus.CONNECTED)
            {
                return;
            }
            List <Action <Channel> > todo = new List <Action <Channel> >();

            lock (AfterAction)
            {
                //Console.WriteLine("After Action AlarmStatus Changed");
                this.StatusChanged -= AfterConnectedStatusChanged;
                if (Disposed)
                {
                    return;
                }
                if (AfterAction == null)
                {
                    return;
                }

                todo = AfterAction.ToList();
                AfterAction.Clear();
            }

            foreach (var i in todo)
            {
                i(this);
            }
        }
        public IPagedList <HotelActualStatus> GetPagedHotelStatus(int page, int pageSize, string queryName, out int count, List <Expression <Func <HotelRestaurant, bool> > > conditions = null)
        {
            using (var repo = Repo <HotelRestaurantRepository>())
            {
                var query = repo.GetAllModels().Include("District").Include("Street").Include("Address");
                if (conditions != null)
                {
                    query = conditions.Aggregate(query, (current, condition) => current.Where(condition));
                }

                if (!string.IsNullOrWhiteSpace(queryName))
                {
                    query = query.Where(obj => obj.ProjectName.Contains(queryName));
                }
                count = query.Count();

                var status = query.Select(q => new HotelActualStatus
                {
                    Name      = q.ProjectName,
                    HotelGuid = q.Id
                }).OrderBy(h => h.HotelGuid).ToPagedList(page, pageSize);

                foreach (var hotel in status)
                {
                    hotel.ChannelStatus = new List <ChannelStatus>();
                    var monitorDatas = GetLastMonitorData(hotel.HotelGuid);
                    var dataGroup    = monitorDatas.GroupBy(obj => new { obj.DataChannel, obj.DeviceIdentity });
                    foreach (var group in dataGroup)
                    {
                        var recentDatas    = group.ToList();
                        var cleanerCurrent = recentDatas.Where(data => data.CommandDataId == CommandDataId.CleanerCurrent)
                                             .OrderByDescending(item => item.DoubleValue).FirstOrDefault();
                        var cleanRate = cleanerCurrent == null ? "无数据" : GetCleanRate(cleanerCurrent.DoubleValue, cleanerCurrent.DeviceIdentity);
                        var channel   = new ChannelStatus
                        {
                            CleanRate      = TranslateCleanRateUrl(cleanRate),
                            CleanerSwitch  = TranslateSwitchUrl(GetMonitorDataValue(ProtocolDataName.CleanerSwitch, recentDatas)?.BooleanValue),
                            FanSwitch      = TranslateSwitchUrl(GetMonitorDataValue(ProtocolDataName.FanSwitch, recentDatas)?.BooleanValue),
                            CleanerCurrent = Globals.GetNullableNumber(cleanerCurrent?.DoubleValue).ToString("F2"),
                            FanCurrent     = "N/A",
                            UpdateTime     = recentDatas.Count > 0 ? recentDatas[0].UpdateTime.ToString("yyyy-MM-dd HH:mm:ss") : "N/A"
                        };

                        var lampblackOut = GetMonitorDataValue(ProtocolDataName.LampblackOutCon, recentDatas);
                        channel.LampblackOut = lampblackOut == null ? "N/A" : Globals.GetNullableNumber(lampblackOut.DoubleValue).ToString("F2");

                        hotel.ChannelStatus.Add(channel);
                    }

                    if (hotel.ChannelStatus.Count == 0)
                    {
                        hotel.ChannelStatus.Add(new ChannelStatus());
                    }
                }

                return(status);
            }
        }
Esempio n. 9
0
        public ChannelStatus getChannelStatus()
        {
            ChannelStatus cs = new ChannelStatus();

            cs.Uninitialized = 0;
            cs.Operable      = 1;
            cs.Settling      = 2;
            cs.Closed        = 3;
            cs.Migrated      = 4;
            return(cs);
        }
Esempio n. 10
0
        internal Channel(FChatConnection Connection, string ID, string Title)
        {
            _Connection = Connection;
            _ID         = ID;
            _Title      = Title;

            _Banlist    = new List <Character>();
            _Characters = new List <Character>();
            _OPs        = new List <Character>();
            _Status     = ChannelStatus.Private;
        }
Esempio n. 11
0
        public virtual Task Shutdown()
        {
            var promise = new TaskCompletionSource();

            Execute(() =>
            {
                this.channelStatus = ChannelStatus.Shutdown;
                this.receivingByteBuf.Return();
            });
            return(invoker.fireOnShutdown(promise));
        }
Esempio n. 12
0
        /// <summary>
        /// Channel
        /// </summary>
        public Channel()
        {
            Header = DefaultHeader;

            Modified = DateTime.Now;
            Created  = DateTime.Now;

            _status = ChannelStatus.Offline;

            Timeout        = uint.MaxValue;
            UpdateInterval = DefaultUpdateInterval;
        }
    public static ChannelStatus getStandardChannelStatus()
    {
        ChannelStatus cs = new ChannelStatus()
        {
            Uninitialized = 0,
            Operable      = 1,
            Settling      = 2,
            Closed        = 3,
            Migrated      = 4
        };

        return(cs);
    }
Esempio n. 14
0
 public void MergeFrom(Component other)
 {
     if (other == null)
     {
         return;
     }
     if (other.summary_ != null)
     {
         if (summary_ == null)
         {
             summary_ = new global::Apollo.Monitor.ComponentStatus();
         }
         Summary.MergeFrom(other.Summary);
     }
     if (other.processStatus_ != null)
     {
         if (processStatus_ == null)
         {
             processStatus_ = new global::Apollo.Monitor.ComponentStatus();
         }
         ProcessStatus.MergeFrom(other.ProcessStatus);
     }
     if (other.channelStatus_ != null)
     {
         if (channelStatus_ == null)
         {
             channelStatus_ = new global::Apollo.Monitor.ComponentStatus();
         }
         ChannelStatus.MergeFrom(other.ChannelStatus);
     }
     if (other.resourceStatus_ != null)
     {
         if (resourceStatus_ == null)
         {
             resourceStatus_ = new global::Apollo.Monitor.ComponentStatus();
         }
         ResourceStatus.MergeFrom(other.ResourceStatus);
     }
     if (other.otherStatus_ != null)
     {
         if (otherStatus_ == null)
         {
             otherStatus_ = new global::Apollo.Monitor.ComponentStatus();
         }
         OtherStatus.MergeFrom(other.OtherStatus);
     }
 }
Esempio n. 15
0
        private void UpdateTick()
        {
            if (tick.Ask > Top - 20)
            {
                status = ChannelStatus.Above;
            }
            else if (tick.Ask > High)
            {
                status = ChannelStatus.Upper;
            }
            else if (tick.Bid < Bottom + 20)
            {
                status = ChannelStatus.Below;
            }
            else if (tick.Bid < High)
            {
                status = ChannelStatus.Lower;
            }
            else
            {
                status = ChannelStatus.Inside;
            }
            switch (status)
            {
            case ChannelStatus.Above:
            case ChannelStatus.Upper:
                traverseDirection = Trend.Down;
                break;

            case ChannelStatus.Below:
            case ChannelStatus.Lower:
                traverseDirection = Trend.Up;
                break;
            }
            isLongFTT  = highMaxVolume.Count > 0 && IsUp && tick.Ask > fttHighestHigh && bars.Volume[0] < highMaxVolume[0] - 5000;
            isShortFTT = lowMaxVolume.Count > 0 && IsDown && tick.Bid < fttLowestLow && bars.Volume[0] < lowMaxVolume[0] - 5000;
//			if( TradeSignal.IsShortFTT) {
//				TickConsole.WriteFile( "TradeSignal.IsShortFTT: isLow="+(lowMaxVolume.Count>0 && IsDown && tick.Bid < fttLowestLow)+", volume="+bars.Volume[0] +", lowMaxVolume="+(lowMaxVolume[0]-5000));
//			}
            isLongTraverse  = highMaxVolume.Count > 0 && IsUp && tick.Ask > fttHighestHigh && bars.Volume[0] > highMaxVolume[0];
            isShortTraverse = lowMaxVolume.Count > 0 && IsDown && tick.Bid <fttLowestLow && bars.Volume[0]> lowMaxVolume[0];
        }
Esempio n. 16
0
        public void Start()
        {
            // Method entry trace

            const string method = "Start";

            if (EventSource.IsEnabled(Event.MethodEnter))
            {
                EventSource.Raise(Event.MethodEnter, method);
            }

            if (!_initialised)
            {
                throw new ContainerNotInitialisedException(typeof(Channel), method);
            }

            try
            {
                // Start the source.

                _source.Start();

                // Update the status.

                _status = ChannelStatus.Running;
            }
            catch (Exception ex)
            {
                if (EventSource.IsEnabled(Event.CriticalError))
                {
                    EventSource.Raise(Event.CriticalError, method, "Cannot start the channel.", ex);
                }
            }

            // Method exit trace

            if (EventSource.IsEnabled(Event.MethodExit))
            {
                EventSource.Raise(Event.MethodExit, method);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Updates the channel status object with the changes. Must be called inside a lock() only.
        /// </summary>
        /// <param name="status"></param>
        /// <param name="modeChanges"></param>
        private void SyncChangesToChannel(ChannelStatus status, ModeChanges modeChanges)
        {
            if (modeChanges.Ops.Contains(this.ircClient.Nickname))
            {
                status.BotOpsHeld      = true;
                status.BotOpsRequested = false;
            }

            if (modeChanges.Deops.Contains(this.ircClient.Nickname))
            {
                status.BotOpsHeld = false;
            }

            if (modeChanges.ReducedModeration.HasValue)
            {
                status.ReducedModeration = modeChanges.ReducedModeration.Value;
            }

            if (modeChanges.Moderated.HasValue)
            {
                status.Moderated = modeChanges.Moderated.Value;
            }

            if (modeChanges.RegisteredOnly.HasValue)
            {
                status.RegisteredOnly = modeChanges.RegisteredOnly.Value;
            }

            modeChanges.Unbans.ForEach(x => status.Bans.Remove(x));
            modeChanges.Unquiets.ForEach(x => status.Quiets.Remove(x));
            modeChanges.Unexempts.ForEach(x => status.Exempts.Remove(x));

            modeChanges.Bans.ForEach(x => status.Bans.Add(x));
            modeChanges.Quiets.ForEach(x => status.Quiets.Add(x));
            modeChanges.Exempts.ForEach(x => status.Exempts.Add(x));
        }
 static void c_StatusChanged(EpicsChannel sender, ChannelStatus newStatus)
 {
     if (newStatus == ChannelStatus.DISCONNECTED)
     {
         gotDisconnect.Set();
         needToStop = true;
     }
 }
 static void ch_StatusChanged(EpicsChannel sender, ChannelStatus newStatus)
 {
     Console.WriteLine(sender.ChannelName + ": " + newStatus);
 }
 static void i_StatusChanged(EpicsChannel sender, ChannelStatus newStatus)
 {
     if(newStatus == ChannelStatus.DISCONNECTED && previousState != newStatus)
         Console.WriteLine("\nClosed!");
     previousState = newStatus;
 }
Esempio n. 21
0
		internal Channel(FChatConnection Connection, string ID, string Title)
		{
			_Connection = Connection;
			_ID = ID;
			_Title = Title;

			_Banlist = new List<Character>();
			_Characters = new List<Character>();
			_OPs = new List<Character>();
			_Status = ChannelStatus.Private;
		}
Esempio n. 22
0
 /// <summary>
 /// Adds a channel status to the data context.
 /// </summary>
 /// <param name="channelStatus">The channel status to be added.</param>
 public void AddChannelStatus(ChannelStatus channelStatus)
 {
     _entityContainer.ChannelStatuses.Add(channelStatus);
     _entityContainer.SaveChanges();
 }
Esempio n. 23
0
 /// <summary>
 /// 通道终止
 /// </summary>
 protected void SetShutdown()
 {
     this.channelStatus = ChannelStatus.Shutdown;
     this.isAlive       = false;
 }
Esempio n. 24
0
 /// <summary>
 /// 获取指定类型或状态的通道
 /// </summary>
 /// <param name="chnlid">通道标识</param>
 /// <param name="chnlType">通道类型</param>
 /// <param name="chnlSttatus">通道状态</param>
 /// <returns>
 /// 若板卡适配器可用并指定了相应的通道标识则直接返回相应的通道,否则查找指定类型及状态的通道
 /// </returns>
 public abstract IChannel GetChannel(int chnlid, ChannelType chnlType, ChannelStatus chnlSttatus);
Esempio n. 25
0
 /// <summary>
 /// 通道关闭
 /// </summary>
 protected void SetClose()
 {
     this.channelStatus = ChannelStatus.Close;
     //关闭socket,并允许重用
     this.isAlive = false;
 }
Esempio n. 26
0
 /// <summary>
 /// 通道连接
 /// </summary>
 protected void SetConnection()
 {
     this.channelStatus = ChannelStatus.Connection;
     this.isAlive       = true;
 }
Esempio n. 27
0
 private LabelValuePair <ChannelStatus?> BuildStatusItem(ChannelStatus value)
 {
     return(new LabelValuePair <ChannelStatus?> {
         Label = value.ToString(), Value = value
     });
 }
        private void RunScript(IAsteriskAGI agi, Dictionary <string, string> vars)
        {
            ChannelStatus status = agi.GetChannelStatus();

            Console.WriteLine("Called GetChannelStatus: {0}", status);


            agi.DatabasePut("test", "blah", "foobar");
            Console.WriteLine("Called DatabasePut set var to 'foobar'");


            string var = agi.DatabaseGet("test", "blah");

            Console.WriteLine("Called DatabaseGet: {0}", var);


            agi.DatabaseDelete("test", "blah");
            Console.WriteLine("Called DatabaseDelete");
            // Test that the Delete worked
            try
            {
                var = agi.DatabaseGet("test", "blah");
                Console.WriteLine("DatabaseGet Succeded, it shouldn't have: {0}", var);
            }
            catch (AsteriskException)
            {
                Console.WriteLine("DatabaseGet Failed, this is good.");
            }


            Console.WriteLine("Waiting 2 seconds for digit");
            Digits pressedDigit = agi.WaitForDigit(2000);

            Console.WriteLine("Called WaitForDigit: {0}", pressedDigit.ToString());


            agi.VerboseLog("Test Error Log", AsteriskVerboseLevel.Error);
            agi.VerboseLog("Test Info Log", AsteriskVerboseLevel.Info);
            agi.VerboseLog("Test Trace Log", AsteriskVerboseLevel.Trace);
            agi.VerboseLog("Test Debug Log", AsteriskVerboseLevel.Debug);
            Console.WriteLine("Called VerboseLog");


            try
            {
                Console.WriteLine("Calling EnableTDD(true)");
                agi.EnableTDD(true);
                Console.WriteLine("Called EnableTDD(true)");
            }
            catch (AsteriskException)
            {
                Console.WriteLine("Tried to enable TDD but the channel is not capable.");
            }


            StreamFileResult result = agi.StreamFile("hang-on-a-second-angry", "1234567890*#");

            Console.WriteLine("Called StreamFile");


            //Console.WriteLine("Please record your message now");
            //agi.RecordFile("blahrec", "wav", Digits.AllNumbers | Digits.AllSymbols, -1);
            //Console.WriteLine("Called RecordFile");


            //agi.StreamFile("blahrec");


            agi.SayNumber(30023, Digits.None);
            Console.WriteLine("Called SayNumber");


            agi.SayDigits("1234567890#*", Digits.None);
            Console.WriteLine("Called SayDigits");


            agi.SayAlpha("ABCDEF", Digits.None);
            Console.WriteLine("Called SayAlpha");


            agi.SayPhonetic("WT", Digits.None);
            Console.WriteLine("Called SayPhonetic");


            agi.SetAutoHangUp(10);
            Console.WriteLine("Called SetAutoHangup");


            agi.SayDateTime(DateTime.Now, Digits.None, "\"ABdY 'digits/at' IMp\"", "UTC");
            agi.SayDateTime(DateTime.Now, Digits.None);
            Console.WriteLine("Called SayDateTime");


            agi.SetVariable("foo", "bar");
            Console.WriteLine("Called SetVariable set var to 'bar'");


            var = agi.GetVariable("foo");
            Console.WriteLine("Called GetVariable: {0}", var);


            agi.EnableMusic(true);
            Console.WriteLine("Called EnableMusic(true), pausing for 2 seconds");
            System.Threading.Thread.Sleep(5000);
            agi.EnableMusic(false);
            Console.WriteLine("Called EnableMusic(false)");
            System.Threading.Thread.Sleep(2000);


            //agi.SetExtension("856");
            //Console.WriteLine("Called SetExtension");
        }
Esempio n. 29
0
        void OnInfo(AMCPParserEventArgs e)
        {
            List <ChannelInfo> channelInfo = new List <ChannelInfo>();

            foreach (string data in e.Data)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(data);

                    device_.OnUpdateInfo(doc);
                }
                catch
                {
                    try
                    {
                        string[] infos = data.Split(' ');
                        int      id    = Int32.Parse(infos[0]);

                        VideoMode vm = VideoMode.Unknown;
                        switch (infos[1].Trim().ToLower())
                        {
                        case "pal43":
                            vm = VideoMode.PAL43;
                            break;

                        case "pal169":
                            vm = VideoMode.PAL169;
                            break;

                        case "ntsc":
                            vm = VideoMode.NTSC;
                            break;

                        case "576p2500":
                            vm = VideoMode.SD576p2500;
                            break;

                        case "720p5000":
                            vm = VideoMode.HD720p5000;
                            break;

                        case "1080i5000":
                            vm = VideoMode.HD1080i5000;
                            break;

                        default:
                            vm = VideoMode.Unknown;
                            break;
                        }
                        ChannelStatus cs = (ChannelStatus)Enum.Parse(typeof(ChannelStatus), infos[2], true);

                        channelInfo.Add(new ChannelInfo(id, vm, cs, ""));
                    }
                    catch { }
                }
            }

            if (channelInfo.Count > 0)
            {
                device_.OnUpdatedChannelInfo(channelInfo);
            }
        }
 static void IntChannelStatusChanged(EpicsChannel sender, ChannelStatus newStatus)
 {
     Console.WriteLine("Channel status changed: " + newStatus);
 }
Esempio n. 31
0
        public override IChannel GetChannel(int chnlid, ChannelType chnlType, ChannelStatus chnlStatus)
        {
            if (CanWork)
            {
                if (chnlid != -1 && Channels[chnlid].ChannelType == chnlType && Channels[chnlid].CurrentStatus == chnlStatus)
                {
                    return Channels[chnlid];
                }

                // ֱ�ӷ���ָ��ͨ����ʶ��ͨ��
                if (chnlid != -1 && chnlStatus == ChannelStatus.IDLE)
                {
                    return chnlid < ChannelCount ? Channels[chnlid] : null;
                }

                // ��ȡָ�����ͼ�״̬��ͨ��
                foreach (IChannel channle in Channels)
                {
                    if (channle.ChannelType == chnlType && channle.CurrentStatus == chnlStatus)
                        return channle;
                }
            }
            return null;
        }
Esempio n. 32
0
 public bool GetStatus(out ChannelStatus cs, out BoxStatus bs, out RecycleStatus rs)
 {
     return(m_ReadCard.GetStatus(out cs, out bs, out rs));
 }
Esempio n. 33
0
 public ChannelInfo(int id, VideoMode vm, ChannelStatus cs, string activeClip)
 {
     ID = id;
     VideoMode = vm;
     Status = cs;
     ActiveClip = activeClip;
 }
 static void channel_StatusChanged(EpicsChannel sender, ChannelStatus newStatus)
 {
     //Console.WriteLine("Status: " + newStatus.ToString());
 }
Esempio n. 35
0
		internal void PushCommand(Command cmd)
		{
			if (cmd.Source == CommandSource.Client)
				return;

			switch (cmd.Token)
			{
				case "JCH":
					{
						var jch = cmd as Server_JCH_ChannelJoin;

						var character = Connection.GetOrCreateCharacter(jch.Character.Identity);

						if (!_Characters.Contains(character))
							_Characters.Add(character);

						if (!string.IsNullOrEmpty(jch.Title))
						{
							_Title = jch.Title;
							Joined = true;
						}
						else
							OnUserJoin?.Invoke(this, new ChannelUserEntryEventArgs(this, character, jch));
					}
					return;

				case "LCH":
					{
						var lch = cmd as Server_LCH_ChannelLeave;

						var character = GetCharacter(lch.Character);
						_Characters.Remove(character);

						if (character.Name == Connection.LocalCharacter.Name)
							Dispose();
						else
							OnUserLeave?.Invoke(this, new ChannelUserEntryEventArgs(this, character, lch));
					}
					return;

				case "ICH":
					{
						var ich = cmd as Server_ICH_ChannelInitialData;

						_ChannelMode = ich.Mode;
						Joined = true;

						foreach (var user in ich.Users)
						{
							var ch = GetCharacter(user.Identity);
							if (!_Characters.Contains(ch))
								_Characters.Add(ch);
						}
					}
					return;

				case "COL":
					{
						var col = cmd as Server_COL_ChannelGetOPs;

						foreach (var op in col.OPs)
							if (!string.IsNullOrWhiteSpace(op))
								_OPs.Add(GetCharacter(op));
					}
					return;

				case "CDS":
					{
						var cds = cmd as Server_CDS_ChannelChangeDescription;

						OnDescriptionChange?.Invoke(this, new ChannelEntryEventArgs<string>(this, cds.Description, cds));
						_Description = cds.Description;
					}
					return;

				case "RMO":
					{
						var rmo = cmd as Server_RMO_ChannelSetMode;

						OnModeChange?.Invoke(this, new ChannelEntryEventArgs<ChannelMode>(this, rmo.Mode, rmo));
						_ChannelMode = rmo.Mode;
					}
					return;

				case "CSO":
					{
						var cso = cmd as Server_CSO_ChannelSetOwner;

						OnOwnerChange?.Invoke(this, new ChannelEntryEventArgs<Character>(this, GetCharacter(cso.Character), cso));
						_OwnerName = cso.Character;
					}
					return;

				case "RST":
					{
						var rst = cmd as Server_RST_ChannelSetStatus;

						OnStatusChange?.Invoke(this, new ChannelEntryEventArgs<ChannelStatus>(this, rst.Status, rst));
						_Status = rst.Status;
					}
					return;

				case "COA":
					{
						var coa = cmd as Server_COA_ChannelMakeOP;

						var character = GetCharacter(coa.Character);
						_OPs.Add(character);

						OnOPAdded?.Invoke(this, new ChannelUserEntryEventArgs(this, character, coa));
					}
					return;

				case "COR":
					{
						var cor = cmd as Server_COR_ChannelRemoveOP;

						var character = GetCharacter(cor.Character);
						_OPs.Remove(character);

						OnOPRemoved?.Invoke(this, new ChannelUserEntryEventArgs(this, character, cor));
					}
					return;

				case "CKU":
					{
						var cku = cmd as Server_CKU_ChannelKickCharacter;

						var character = GetCharacter(cku.Character);
						_Characters.Remove(character);

						OnUserKicked?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cku.OP), cku));
					}
					return;

				case "CBU":
					{
						var cbu = cmd as Server_CBU_ChannelBanCharacter;

						var character = GetCharacter(cbu.Character);
						_Characters.Remove(character);

						_Banlist.Add(character);

						OnUserBanned?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cbu.OP), cbu));
					}
					return;

				case "CUB":
					{
						var cub = cmd as Server_CUB_ChannelUnbanCharacter;

						var character = GetCharacter(cub.Character);

						_Banlist.Remove(character);

						OnUserUnbanned?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cub.OP), cub));
					}
					return;

				case "CTU":
					{
						var ctu = cmd as Server_CTU_ChannelTimeoutCharacter;

						var character = GetCharacter(ctu.Character);
						_Characters.Remove(character);

						OnUserTimedout?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(ctu.OP), ctu));
					}
					return;

				case "MSG":
					{
						var msg = cmd as Server_MSG_ChannelChatMessage;
						OnChatMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(msg.Character), msg.Message, msg));
					} return;

				case "LRP":
					{
						var lrp = cmd as Server_LRP_ChannelLFRPMessage;
						OnLFRPMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(lrp.Character), lrp.AD, lrp));
					} return;

				case "RLL":
					{
						var rll = cmd as Server_RLL_ChannelRollMessage;
						OnRollMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(rll.Character), rll.Message, rll));
					} return;

				case "SYS":
					{
						var sys = cmd as Server_SYS_ChatSYSMessage;
						OnSYSMessage?.Invoke(this, new ChannelEntryEventArgs<string>(this, sys.Message, sys));
					} return;
			}
		}
Esempio n. 36
0
 /// <summary>
 /// Delete a channel status from the data context.
 /// </summary>
 /// <param name="channelStatus">The channel status to be deleted.</param>
 public void DeleteChannelStatus(ChannelStatus channelStatus)
 {
     _entityContainer.ChannelStatuses.Remove(channelStatus);
     _entityContainer.SaveChanges();
 }
Esempio n. 37
0
 /// <summary>
 /// ��ȡָ�����ͻ�״̬��ͨ��
 /// </summary>
 /// <param name="chnlid">ͨ����ʶ</param>
 /// <param name="chnlType">ͨ������</param>
 /// <param name="chnlSttatus">ͨ��״̬</param>
 /// <returns>
 /// ��忨���������ò�ָ������Ӧ��ͨ����ʶ��ֱ�ӷ�����Ӧ��ͨ�����������ָ�����ͼ�״̬��ͨ��
 /// </returns>
 public abstract IChannel GetChannel(int chnlid, ChannelType chnlType, ChannelStatus chnlSttatus);
Esempio n. 38
0
        internal void PushCommand(Command cmd)
        {
            if (cmd.Source == CommandSource.Client)
            {
                return;
            }

            switch (cmd.Token)
            {
            case "JCH":
            {
                var jch = cmd as Server_JCH_ChannelJoin;

                var character = Connection.GetOrCreateCharacter(jch.Character.Identity);

                if (!_Characters.Contains(character))
                {
                    _Characters.Add(character);
                }

                if (!string.IsNullOrEmpty(jch.Title))
                {
                    _Title = jch.Title;
                    Joined = true;
                }
                else
                {
                    OnUserJoin?.Invoke(this, new ChannelUserEntryEventArgs(this, character, jch));
                }
            }
                return;

            case "LCH":
            {
                var lch = cmd as Server_LCH_ChannelLeave;

                var character = GetCharacter(lch.Character);
                _Characters.Remove(character);

                if (character.Name == Connection.LocalCharacter.Name)
                {
                    Dispose();
                }
                else
                {
                    OnUserLeave?.Invoke(this, new ChannelUserEntryEventArgs(this, character, lch));
                }
            }
                return;

            case "ICH":
            {
                var ich = cmd as Server_ICH_ChannelInitialData;

                _ChannelMode = ich.Mode;
                Joined       = true;

                foreach (var user in ich.Users)
                {
                    var ch = GetCharacter(user.Identity);
                    if (!_Characters.Contains(ch))
                    {
                        _Characters.Add(ch);
                    }
                }
            }
                return;

            case "COL":
            {
                var col = cmd as Server_COL_ChannelGetOPs;

                foreach (var op in col.OPs)
                {
                    if (!string.IsNullOrWhiteSpace(op))
                    {
                        _OPs.Add(GetCharacter(op));
                    }
                }
            }
                return;

            case "CDS":
            {
                var cds = cmd as Server_CDS_ChannelChangeDescription;

                OnDescriptionChange?.Invoke(this, new ChannelEntryEventArgs <string>(this, cds.Description, cds));
                _Description = cds.Description;
            }
                return;

            case "RMO":
            {
                var rmo = cmd as Server_RMO_ChannelSetMode;

                OnModeChange?.Invoke(this, new ChannelEntryEventArgs <ChannelMode>(this, rmo.Mode, rmo));
                _ChannelMode = rmo.Mode;
            }
                return;

            case "CSO":
            {
                var cso = cmd as Server_CSO_ChannelSetOwner;

                OnOwnerChange?.Invoke(this, new ChannelEntryEventArgs <Character>(this, GetCharacter(cso.Character), cso));
                _OwnerName = cso.Character;
            }
                return;

            case "RST":
            {
                var rst = cmd as Server_RST_ChannelSetStatus;

                OnStatusChange?.Invoke(this, new ChannelEntryEventArgs <ChannelStatus>(this, rst.Status, rst));
                _Status = rst.Status;
            }
                return;

            case "COA":
            {
                var coa = cmd as Server_COA_ChannelMakeOP;

                var character = GetCharacter(coa.Character);
                _OPs.Add(character);

                OnOPAdded?.Invoke(this, new ChannelUserEntryEventArgs(this, character, coa));
            }
                return;

            case "COR":
            {
                var cor = cmd as Server_COR_ChannelRemoveOP;

                var character = GetCharacter(cor.Character);
                _OPs.Remove(character);

                OnOPRemoved?.Invoke(this, new ChannelUserEntryEventArgs(this, character, cor));
            }
                return;

            case "CKU":
            {
                var cku = cmd as Server_CKU_ChannelKickCharacter;

                var character = GetCharacter(cku.Character);
                _Characters.Remove(character);

                OnUserKicked?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cku.OP), cku));
            }
                return;

            case "CBU":
            {
                var cbu = cmd as Server_CBU_ChannelBanCharacter;

                var character = GetCharacter(cbu.Character);
                _Characters.Remove(character);

                _Banlist.Add(character);

                OnUserBanned?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cbu.OP), cbu));
            }
                return;

            case "CUB":
            {
                var cub = cmd as Server_CUB_ChannelUnbanCharacter;

                var character = GetCharacter(cub.Character);

                _Banlist.Remove(character);

                OnUserUnbanned?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(cub.OP), cub));
            }
                return;

            case "CTU":
            {
                var ctu = cmd as Server_CTU_ChannelTimeoutCharacter;

                var character = GetCharacter(ctu.Character);
                _Characters.Remove(character);

                OnUserTimedout?.Invoke(this, new ChannelAdminActionEventArgs(this, character, GetCharacter(ctu.OP), ctu));
            }
                return;

            case "MSG":
            {
                var msg = cmd as Server_MSG_ChannelChatMessage;
                OnChatMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(msg.Character), msg.Message, msg));
            } return;

            case "LRP":
            {
                var lrp = cmd as Server_LRP_ChannelLFRPMessage;
                OnLFRPMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(lrp.Character), lrp.AD, lrp));
            } return;

            case "RLL":
            {
                var rll = cmd as Server_RLL_ChannelRollMessage;
                OnRollMessage?.Invoke(this, new ChannelUserMessageEventArgs(this, GetCharacter(rll.Character), rll.Message, rll));
            } return;

            case "SYS":
            {
                var sys = cmd as Server_SYS_ChatSYSMessage;
                OnSYSMessage?.Invoke(this, new ChannelEntryEventArgs <string>(this, sys.Message, sys));
            } return;
            }
        }
Esempio n. 39
0
 internal ChannelStatusChangedEventArgs(ChannelStatus status)
 {
     Status = status;
 }