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); } }
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; }
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); }
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); }
public ChannelInfo(int id, VideoMode vm, ChannelStatus cs, string activeClip) { ID = id; VideoMode = vm; Status = cs; ActiveClip = activeClip; }
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); } }
public ChannelStatus getChannelStatus() { ChannelStatus cs = new ChannelStatus(); cs.Uninitialized = 0; cs.Operable = 1; cs.Settling = 2; cs.Closed = 3; cs.Migrated = 4; return(cs); }
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; }
public virtual Task Shutdown() { var promise = new TaskCompletionSource(); Execute(() => { this.channelStatus = ChannelStatus.Shutdown; this.receivingByteBuf.Return(); }); return(invoker.fireOnShutdown(promise)); }
/// <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); }
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); } }
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]; }
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); } }
/// <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; }
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; }
/// <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(); }
/// <summary> /// 通道终止 /// </summary> protected void SetShutdown() { this.channelStatus = ChannelStatus.Shutdown; this.isAlive = false; }
/// <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);
/// <summary> /// 通道关闭 /// </summary> protected void SetClose() { this.channelStatus = ChannelStatus.Close; //关闭socket,并允许重用 this.isAlive = false; }
/// <summary> /// 通道连接 /// </summary> protected void SetConnection() { this.channelStatus = ChannelStatus.Connection; this.isAlive = true; }
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"); }
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); }
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; }
public bool GetStatus(out ChannelStatus cs, out BoxStatus bs, out RecycleStatus rs) { return(m_ReadCard.GetStatus(out cs, out bs, out rs)); }
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()); }
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; } }
/// <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(); }
/// <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);
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; } }
internal ChannelStatusChangedEventArgs(ChannelStatus status) { Status = status; }