private void Peer_ReadLine(object sender, ReadLineEventArgs e) { var type = peerManager.GetType(); var method = type.GetMethod("Peer_ReadLine", BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(peerManager, new object[] { sender, e }); }
internal void HandleOnReadLine(object sender, ReadLineEventArgs e) { if (OnReadLine != null) { OnReadLine(this, e); } }
public void PeerReadLineDuplicateRemoving() { var peerManager = new PeerManager() { PeerCount = () => 100, PeerId = () => 1, ProtocolTime = () => DateTime.Now, }; peerManager.ConnectionsChanged += (s, e) => { }; var count = 0; peerManager.OnAreapeers += (s, e) => { count++; }; var line = "561 1 ABC:2022/01/01 00-00-00:001,100"; var packet = Packet.Parse(line); var eventArgs = new ReadLineEventArgs() { line = line, packet = packet }; var readLine = peerManager.GetType().GetMethod("Peer_ReadLine", BindingFlags.Instance | BindingFlags.NonPublic); Enumerable.Range(0, 5).ToList().ForEach(x => readLine.Invoke(peerManager, new object[] { null, eventArgs })); Assert.AreEqual(1, count); }
void ClientOnReadLine(object sender, ReadLineEventArgs e) { _events.Enqueue(new IrcEvent { Type = IrcEvent.EventType.ReadLine, Event = e }); _waitHandle.Set(); }
private void Relay(Manager.Peer peer, CRLFSocket socket, Packet packet) { ReadLineEventArgs eventArgs = new ReadLineEventArgs(); eventArgs.packet = packet; ReadLine(this, eventArgs); }
public static void IrcConnectionListCallback(object sender, ReadLineEventArgs e) { string[] linear = e.Line.Split(new char[] { ' ' }); if (linear.Length >= 5 && linear[1] == "322") { Console.WriteLine("On the IRC channel " + CHANNEL + " are " + linear[4] + " users"); ((IrcConnection)sender).Disconnect(); } }
private void ReadLine(object sender, ReadLineEventArgs e) { if (_logging) { Common.Log($"Received: {e.Line}"); } OnSendReceiveData?.Invoke(this, new OnSendReceiveDataArgs { Direction = Enums.SendReceiveDirection.Received, Data = e.Line }); ParseIrcMessage(e.Line); }
private bool ProcessNetworkInquiry(object sender, ReadLineEventArgs e) { // 調査エコー if (e.packet.Code == 615) { if (e.packet.Data == null || e.packet.Data.Length < 2) { return(true); } Send(e.packet, (Peer)sender); // リプライ送信 var packet = new Packet(); packet.Code = 635; packet.Hop = 1; packet.Data = new string[] { e.packet.Data[0], e.packet.Data[1], PeerId().ToString(), string.Join(",", peerList.Select(peer => peer.PeerData.PeerId)), (e.packet.Hop - 1).ToString() }; ((Peer)sender).Send(packet); return(true); } // 調査エコーリプライ if (e.packet.Code == 635) { if (e.packet.Data == null || e.packet.Data.Length < 5) { return(true); } var peer = networkInquiryManager.FindPeer(e.packet.Data[0], e.packet.Data[1]); if (peer == null || !peer.IsConnected) { Send(e.packet, (Peer)sender); } else { peer.Send(e.packet); } return(true); } return(false); }
private void Invoke(Packet packet) { var eventArgs = new ReadLineEventArgs(); eventArgs.packet = packet; var type = peer.GetType(); type.InvokeMember( "Socket_ReadLine", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, peer, new object[] { this, eventArgs } ); }
void Socket_ReadLine(object sender, ReadLineEventArgs e) { Packet packet = e.packet; string methodName = PeerConst.GetCodeName(packet.Code); if (methodName == null) { return; } Type type = state.GetType(); MethodInfo methodInfo = type.GetMethod(methodName); object[] args = { this, socket, packet }; methodInfo.Invoke(state, args); }
/// <summary> /// Handles the IRC OnReadLine event. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">EventArgs.</param> void OnReadLine(object sender, ReadLineEventArgs e) { string command = e.Line.Split(' ')[1]; if (command.Equals("PING")) { string server = e.Line.Split(' ')[2]; irc.WriteLine("PONG " + server, Priority.Critical); } else if (command.Equals("422") || command.Equals("376")) // 422: motd missing // 376: end of motd { if (OpList != null) { OpList.Clear(); } irc.RfcJoin(channel); } }
/// <summary> /// データを処理します。 /// </summary> /// <param name="socket"></param> /// <param name="packet"></param> private void ProcessData(Object sender, ReadLineEventArgs e) { Logger.GetLog().Debug("現在の状態: " + State.GetType().Name); CRLFSocket socket = (CRLFSocket)sender; Packet packet = e.packet; string methodName = ClientConst.GetCodeName(packet.Code); Logger.GetLog().Debug("実行するメソッド: " + methodName); // HACK: こんなところでリフレクションを無駄に使うのはいかんでしょう。 Type type = State.GetType(); MethodInfo methodInfo = type.GetMethod(methodName); object[] args = { this, socket, packet }; methodInfo.Invoke(State, args); Logger.GetLog().Debug("実行後の状態: " + State.GetType().Name); State.Process(this, socket); }
/// <summary> /// Read line callback /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnReadLine(object sender, ReadLineEventArgs e) { try { var command = e.Line.Split(' ')[1]; if (command.Equals("PING")) { var server = e.Line.Split(' ')[2]; _irc.WriteLine("PONG " + server, Priority.Critical); } else if (command.Equals("422") || command.Equals("376")) // 422: motd missing // 376: end of motd { _irc.RfcJoin(_ircChannel); } } catch (Exception ex) { Logger.Error(ex); } }
internal void OnReadLineRequested(string prompt, string defaultValue, string[] options) { lock (this._locker) { if (this._cancelRequest) { return; } } EventHandler <ReadLineEventArgs> readLineRequested = this.ReadLineRequested; if (readLineRequested != null) { ReadLineEventArgs e = new ReadLineEventArgs { Client = this, Prompt = prompt, DefaultValue = defaultValue, Options = options }; readLineRequested(this, e); } }
void Peer_ReadLine(object sender, ReadLineEventArgs e) { if (duplicateRemover.isDuplicate(e.packet)) { return; } if (e.packet.Hop > Math.Max(10, Math.Sqrt(PeerCount()))) { return; } RaiseDataEvent(e.packet); e.packet.Hop++; if (ProcessNetworkInquiry(sender, e)) { return; } Send(e.packet, (Peer)sender); }
private void irc_OnReadLine(object sender, ReadLineEventArgs e) { //this.AddChatMsg(e.Line); }
void State_ReadLine(object sender, ReadLineEventArgs e) { ReadLine(this, e); }
private void OnReadLine(object sender, ReadLineEventArgs e) { if (_logging) { Console.WriteLine(e.Line); } if (e.Line.Split(':').Length > 2) { if (e.Line.Split(':')[2] == "You are in a maze of twisty passages, all alike.") { _connected = true; OnConnected?.Invoke(null, new OnConnectedArgs { Channel = _channel, Username = TwitchUsername }); } } if (e.Line.Contains($"#{_channel}")) { var splitter = Regex.Split(e.Line, $" #{_channel}"); var readType = splitter[0].Split(' ')[splitter[0].Split(' ').Length - 1]; switch (readType) { case "PRIVMSG": if (e.Line.Split('!')[0] == ":twitchnotify" && (e.Line.Contains("just subscribed!") || e.Line.Contains("subscribed for"))) { var subscriber = new Subscriber(e.Line); OnSubscriber?.Invoke(null, new OnSubscriberArgs { Subscriber = subscriber, Channel = _channel }); } else { var chatMessage = new ChatMessage(e.Line); _previousMessage = chatMessage; OnMessageReceived?.Invoke(null, new OnMessageReceivedArgs { ChatMessage = chatMessage }); if (_commandIdentifier != '\0' && chatMessage.Message[0] == _commandIdentifier) { string command; var argumentsAsString = ""; var argumentsAsList = new List <string>(); if (chatMessage.Message.Contains(" ")) { command = chatMessage.Message.Split(' ')[0].Substring(1, chatMessage.Message.Split(' ')[0].Length - 1); argumentsAsList.AddRange( chatMessage.Message.Split(' ').Where(arg => arg != _commandIdentifier + command)); argumentsAsString = chatMessage.Message.Replace(chatMessage.Message.Split(' ')[0] + " ", ""); } else { command = chatMessage.Message.Substring(1, chatMessage.Message.Length - 1); } OnCommandReceived?.Invoke(null, new OnCommandReceivedArgs { Command = command, ChatMessage = chatMessage, Channel = _channel, ArgumentsAsList = argumentsAsList, ArgumentsAsString = argumentsAsString }); } } break; case "JOIN": //:the_kraken_bot!the_kraken_bot@the_kraken_bot.tmi.twitch.tv JOIN #swiftyspiffy OnViewerJoined?.Invoke(null, new OnViewerJoinedArgs { Username = e.Line.Split('!')[1].Split('@')[0], Channel = _channel }); break; case "MODE": //:jtv MODE #swiftyspiffy +o swiftyspiffy if (e.Line.Split(' ').Length == 4) { OnModeratorJoined?.Invoke(null, new OnModeratorJoinedArgs { Username = e.Line.Split(' ')[4], Channel = _channel }); } else { if (_logging) { Console.WriteLine("FAILED PARSE: " + e.Line); } } break; case "NOTICE": if (e.Line.Contains("Error logging in")) { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(e.Line, _credentials.TwitchUsername) }); } if (e.Line.Contains("has gone offline")) { OnHostLeft?.Invoke(null, null); } break; case "ROOMSTATE": _state = new ChannelState(e.Line); OnChannelStateChanged?.Invoke(null, new OnChannelStateChangedArgs { ChannelState = _state }); break; case "USERSTATE": //@color=#8A2BE2;display-name=The_Kraken_Bot;emote-sets=0,5628;subscriber=0;turbo=0;user-type=mod :tmi.twitch.tv USERSTATE #swiftyspiffy var userState = new UserState(e.Line); OnUserStateChanged?.Invoke(null, new OnUserStateChangedArgs { UserState = userState }); break; default: if (_logging) { Console.WriteLine("Unaccounted for: {0}", e.Line); } break; } } else { //Special cases if (e.Line == ":tmi.twitch.tv NOTICE * :Error logging in") { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(e.Line, _credentials.TwitchUsername) }); } else { if (_logging) { Console.WriteLine("Not registered: " + e.Line); } } } }
private void OnReadLine(object sender, ReadLineEventArgs e) { // Hack to accomodate at least cyrillic characters, possibly more string decodedMessage = Encoding.UTF8.GetString(Encoding.Default.GetBytes(e.Line)); if (_logging) { Console.WriteLine(decodedMessage); } if (decodedMessage.Split(':').Length > 2) { if (decodedMessage.Split(':')[2] == "You are in a maze of twisty passages, all alike.") { _connected = true; OnConnected?.Invoke(null, new OnConnectedArgs { Channel = _channel, Username = TwitchUsername }); } } if (decodedMessage.Contains($"#{_channel}")) { var splitter = Regex.Split(decodedMessage, $" #{_channel}"); var readType = splitter[0].Split(' ')[splitter[0].Split(' ').Length - 1]; switch (readType) { case "PRIVMSG": if (decodedMessage.Split('!')[0] == ":twitchnotify" && (decodedMessage.Contains("just subscribed!"))) { var subscriber = new NewSubscriber(decodedMessage); OnNewSubscriber?.Invoke(null, new OnNewSubscriberArgs { Subscriber = subscriber, Channel = _channel }); } else { var chatMessage = new ChatMessage(decodedMessage); _previousMessage = chatMessage; OnMessageReceived?.Invoke(null, new OnMessageReceivedArgs { ChatMessage = chatMessage }); if (_commandIdentifier != '\0' && chatMessage.Message[0] == _commandIdentifier) { string command; var argumentsAsString = ""; var argumentsAsList = new List <string>(); if (chatMessage.Message.Contains(" ")) { command = chatMessage.Message.Split(' ')[0].Substring(1, chatMessage.Message.Split(' ')[0].Length - 1); argumentsAsList.AddRange( chatMessage.Message.Split(' ').Where(arg => arg != _commandIdentifier + command)); argumentsAsString = chatMessage.Message.Replace(chatMessage.Message.Split(' ')[0] + " ", ""); } else { command = chatMessage.Message.Substring(1, chatMessage.Message.Length - 1); } OnCommandReceived?.Invoke(null, new OnCommandReceivedArgs { Command = command, ChatMessage = chatMessage, Channel = _channel, ArgumentsAsList = argumentsAsList, ArgumentsAsString = argumentsAsString }); } } break; case "JOIN": //:the_kraken_bot!the_kraken_bot@the_kraken_bot.tmi.twitch.tv JOIN #swiftyspiffy OnViewerJoined?.Invoke(null, new OnViewerJoinedArgs { Username = decodedMessage.Split('!')[1].Split('@')[0], Channel = _channel }); break; case "MODE": //:jtv MODE #swiftyspiffy +o swiftyspiffy if (decodedMessage.Split(' ').Length == 4) { OnModeratorJoined?.Invoke(null, new OnModeratorJoinedArgs { Username = decodedMessage.Split(' ')[4], Channel = _channel }); } else { if (_logging) { Console.WriteLine("FAILED PARSE: " + decodedMessage); } } break; case "NOTICE": if (decodedMessage.Contains("Error logging in")) { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(decodedMessage, _credentials.TwitchUsername) }); } if (decodedMessage.Contains("has gone offline")) { OnHostLeft?.Invoke(null, null); } break; case "ROOMSTATE": _state = new ChannelState(decodedMessage); OnChannelStateChanged?.Invoke(null, new OnChannelStateChangedArgs { ChannelState = _state }); break; case "USERSTATE": //@color=#8A2BE2;display-name=The_Kraken_Bot;emote-sets=0,5628;subscriber=0;turbo=0;user-type=mod :tmi.twitch.tv USERSTATE #swiftyspiffy var userState = new UserState(decodedMessage); OnUserStateChanged?.Invoke(null, new OnUserStateChangedArgs { UserState = userState }); break; case "USERNOTICE": //@badges=subscriber/1,turbo/1;color=#2B119C;display-name=JustFunkIt;emotes=;login=justfunkit;mod=0;msg-id=resub;msg-param-months=2;room-id=44338537;subscriber=1;system-msg=JustFunkIt\ssubscribed\sfor\s2\smonths\sin\sa\srow!;turbo=1;user-id=26526370;user-type= :tmi.twitch.tv USERNOTICE #burkeblack :AVAST YEE SCURVY DOG switch (decodedMessage.Split(';')[6].Split('=')[1]) { case "resub": var resubObj = new ReSubscriber(decodedMessage); OnReSubscriber?.Invoke(null, new OnReSubscriberArgs { ReSubscriber = resubObj }); break; default: break; } break; default: if (_logging) { Console.WriteLine("Unaccounted for: {0}", decodedMessage); } break; } } else { //Special cases if (decodedMessage == ":tmi.twitch.tv NOTICE * :Error logging in") { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(decodedMessage, _credentials.TwitchUsername) }); } else { if (_logging) { Console.WriteLine("Not registered: " + decodedMessage); } } } }
public void PluginsOnReadLine(object sender, ReadLineEventArgs e) { OnReadLine(this, e); }
private void OnReadLine(object sender, ReadLineEventArgs e) { // Hack to accomodate at least cyrillic characters, possibly more string decodedMessage = Encoding.UTF8.GetString(Encoding.Default.GetBytes(e.Line)); if (_logging) { Console.WriteLine(decodedMessage); } #region Chat Parsing // On Connected if (ChatParsing.detectConnected(decodedMessage)) { _connected = true; OnConnected?.Invoke(null, new OnConnectedArgs { Channel = _channel, Username = TwitchUsername }); return; } // On New Subscriber if (ChatParsing.detectNewSubscriber(decodedMessage, _channel)) { OnNewSubscriber?.Invoke(null, new OnNewSubscriberArgs { Subscriber = new NewSubscriber(decodedMessage), Channel = _channel }); return; } // On Command Received (PURPOSELY DROP THROUGH WITHOUT RETURN) if (ChatParsing.detectCommandReceived(decodedMessage, _channel, _channelEmotes, WillReplaceEmotes, _chatCommandIdentifiers)) { var chatMessage = new ChatMessage(decodedMessage, ref _channelEmotes, WillReplaceEmotes); string command = chatMessage.Message.Split(' ')?[0].Substring(1, chatMessage.Message.Split(' ')[0].Length - 1) ?? chatMessage.Message.Substring(1, chatMessage.Message.Length - 1); var argumentsAsList = chatMessage.Message.Split(' ')?.Where(arg => arg != chatMessage.Message[0] + command).ToList <string>() ?? new List <string>(); string argumentsAsString = chatMessage.Message.Replace(chatMessage.Message.Split(' ')?[0] +" ", "") ?? ""; OnChatCommandReceived?.Invoke(null, new OnChatCommandReceivedArgs { Command = command, ChatMessage = chatMessage, Channel = _channel, ArgumentsAsList = argumentsAsList, ArgumentsAsString = argumentsAsString }); // purposely drop through without return } // On Message Received if (ChatParsing.detectMessageReceived(decodedMessage, _channel)) { var chatMessage = new ChatMessage(decodedMessage, ref _channelEmotes, WillReplaceEmotes); _previousMessage = chatMessage; OnMessageReceived?.Invoke(null, new OnMessageReceivedArgs { ChatMessage = chatMessage }); return; } // On Viewer Joined if (ChatParsing.detectViewerJoined(decodedMessage, _channel)) { OnViewerJoined?.Invoke(null, new OnViewerJoinedArgs { Username = decodedMessage.Split('!')[1].Split('@')[0], Channel = _channel }); return; } // On Viewer Left if (ChatParsing.detectedViewerLeft(decodedMessage, _channel)) { OnViewerLeft?.Invoke(null, new OnViewerLeftArgs { Username = decodedMessage.Split(':')[1].Split('!')[0], Channel = _channel }); return; } // On Moderator Joined if (ChatParsing.detectedModeratorJoined(decodedMessage, _channel)) { OnModeratorJoined?.Invoke(null, new OnModeratorJoinedArgs { Username = decodedMessage.Split(' ')[4], Channel = _channel }); return; } // On Moderator Left if (ChatParsing.detectedModeatorLeft(decodedMessage, _channel)) { OnModeratorLeft?.Invoke(null, new OnModeratorLeftArgs { Username = decodedMessage.Split(' ')[4], Channel = _channel }); return; } // On Incorrect login if (ChatParsing.detectedIncorrectLogin(decodedMessage, _channel)) { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(decodedMessage, _credentials.TwitchUsername) }); return; } // On Host Left if (ChatParsing.detectedHostLeft(decodedMessage, _channel)) { OnHostLeft?.Invoke(null, null); return; } // On Channel State Changed if (ChatParsing.detectedChannelStateChanged(decodedMessage, _channel)) { OnChannelStateChanged?.Invoke(null, new OnChannelStateChangedArgs { ChannelState = new ChannelState(decodedMessage) }); return; } // On User State Changed if (ChatParsing.detectedUserStateChanged(decodedMessage, _channel)) { OnUserStateChanged?.Invoke(null, new OnUserStateChangedArgs { UserState = new UserState(decodedMessage) }); return; } // On ReSubscriber if (ChatParsing.detectedReSubscriber(decodedMessage, _channel)) { OnReSubscriber?.Invoke(null, new OnReSubscriberArgs { ReSubscriber = new ReSubscriber(decodedMessage) }); return; } // On PING received if (ChatParsing.detectedPing(decodedMessage) && !DisableAutoPong) { SendRaw("PONG :tmi.twitch.tv"); return; } // On Hosting Stopped if (ChatParsing.detectedHostingStopped(decodedMessage)) { int viewers; int.TryParse(decodedMessage.Split(' ')[4], out viewers); OnHostingStopped?.Invoke(null, new OnHostingStoppedArgs() { Viewers = viewers, HostingChannel = decodedMessage.Split(' ')[2].Remove(0, 1) }); return; } // On Hosting Started if (ChatParsing.detectedHostingStarted(decodedMessage)) { int viewers; int.TryParse(decodedMessage.Split(' ')[4], out viewers); OnHostingStarted?.Invoke(null, new OnHostingStartedArgs() { Viewers = viewers, HostingChannel = decodedMessage.Split(' ')[2].Remove(0, 1), TargetChannel = decodedMessage.Split(' ')[3].Remove(0, 1) }); return; } // On Existing Users Detected if (ChatParsing.detectedExistingUsers(decodedMessage, _credentials.TwitchUsername)) { var parsedUsers = decodedMessage.Replace($":{_credentials.TwitchUsername}.tmi.twitch.tv 353 {_credentials.TwitchUsername} = #{_channel} :", "").Split(' '); OnExistingUsersDetected?.Invoke(null, new OnExistingUsersDetectedArgs { Channel = _channel, ExistingUsers = decodedMessage.Replace($":{_credentials.TwitchUsername}.tmi.twitch.tv 353 {_credentials.TwitchUsername} = #{_channel} :", "").Split(' ').ToList <string>() }); return; } #endregion #region Whisper Parsing if (decodedMessage.Split(' ').Count() > 2 && (decodedMessage.Split(' ')[1] == "WHISPER" || decodedMessage.Split(' ')[2] == "WHISPER")) { // On Whisper Message Received if (WhisperParsing.detectedWhisperReceived(decodedMessage, _credentials.TwitchUsername)) { OnWhisperReceived?.Invoke(null, new OnWhisperReceivedArgs { WhisperMessage = new WhisperMessage(decodedMessage, _credentials.TwitchUsername) }); return; } // On Whisper Command Received if (WhisperParsing.detectedWhisperCommandReceived(decodedMessage, _credentials.TwitchUsername, _whisperCommandIdentifiers)) { var whisperMessage = new WhisperMessage(decodedMessage, _credentials.TwitchUsername); string command = whisperMessage.Message.Split(' ')?[0].Substring(1, whisperMessage.Message.Split(' ')[0].Length - 1) ?? whisperMessage.Message.Substring(1, whisperMessage.Message.Length - 1); var argumentsAsList = whisperMessage.Message.Split(' ')?.Where(arg => arg != whisperMessage.Message[0] + command).ToList <string>() ?? new List <string>(); string argumentsAsString = whisperMessage.Message.Replace(whisperMessage.Message.Split(' ')?[0] +" ", "") ?? ""; OnWhisperCommandReceived?.Invoke(null, new OnWhisperCommandReceivedArgs { Command = command, WhisperMessage = whisperMessage, ArgumentsAsList = argumentsAsList, ArgumentsAsString = argumentsAsString }); } } #endregion // Any other messages here if (_logging) { Console.WriteLine($"Unaccounted for: {decodedMessage}"); } }
private void OnReadLine(object sender, ReadLineEventArgs e) { if (_logging) { Console.WriteLine(e.Line); } if (e.Line.Split(':').Length > 2) { if (e.Line.Split(':')[2] == "You are in a maze of twisty passages, all alike.") { _connected = true; OnConnected?.Invoke(null, new OnConnectedArgs { Username = TwitchUsername }); } } if (e.Line.Split(' ').Length > 3 && e.Line.Split(' ')[2] == "WHISPER") { var whisperMessage = new WhisperMessage(e.Line, _credentials.TwitchUsername); _previousWhisper = whisperMessage; OnWhisperReceived?.Invoke(null, new OnWhisperReceivedArgs { WhisperMessage = whisperMessage }); if (_commandIdentifier == '\0' || whisperMessage.Message[0] != _commandIdentifier) { return; } string command; var argumentsAsString = ""; var argumentsAsList = new List <string>(); if (whisperMessage.Message.Contains(" ")) { command = whisperMessage.Message.Split(' ')[0].Substring(1, whisperMessage.Message.Split(' ')[0].Length - 1); argumentsAsList.AddRange( whisperMessage.Message.Split(' ').Where(arg => arg != _commandIdentifier + command)); argumentsAsString = whisperMessage.Message.Replace(whisperMessage.Message.Split(' ')[0] + " ", ""); } else { command = whisperMessage.Message.Substring(1, whisperMessage.Message.Length - 1); } OnCommandReceived?.Invoke(null, new OnCommandReceivedArgs { Command = command, Username = whisperMessage.Username, ArgumentsAsList = argumentsAsList, ArgumentsAsString = argumentsAsString }); } else { //Special cases if (e.Line == ":tmi.twitch.tv NOTICE * :Error logging in") { _client.Disconnect(); OnIncorrectLogin?.Invoke(null, new OnIncorrectLoginArgs { Exception = new ErrorLoggingInException(e.Line, _credentials.TwitchUsername) }); } else { if (_logging) { Console.WriteLine("Not registered: " + e.Line); } } } }
private void KeyEvent(object sender, KeyEventArgs e) { if (historyNext && e.KeyCode != Keys.Enter) { historyNext = false; } if (hideNext) { string chr = (new KeysConverter().ConvertToString(e.KeyCode)); hidden.SelectionStart = input.SelectionStart - prefix.Length; hidden.SelectionLength = input.SelectionLength; if (chr == "Back") { HiddenBackspace(); } else if (chr.Length == 1) { hidden.Text += chr; input.Text += "X"; e.SuppressKeyPress = true; input.Select(input.Text.Length, 0); } else { e.SuppressKeyPress = true; input.Select(input.Text.Length, 0); } } if (e.KeyCode == Keys.Enter) { string command = input.Text.Substring(prefix.Length); if (!hideNext && !choiceMode && !ignoreNext && !command.StartsWith("set pin ")) { history.Add(command); if (!historyNext) { hIndex = history.Count; } else { historyNext = false; } prevCommand = command; } if (hideNext) { tempText = hidden.Text; hidden = new TextBox(); hideNext = false; } else { tempText = command; } ReadLineEventArgs args = new ReadLineEventArgs(command); if (!choiceMode && !ignoreNext) { OnReadLine?.Invoke(this, args); } if (ignoreNext) { ignoreNext = false; } input.Clear(); input.Text = String.Empty; input.Text = prefix; input.Select(input.Text.Length, 0); input.Text = input.Text.Replace("\r\n", String.Empty); input.Text = input.Text.Trim(); e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Left) { if (input.SelectionStart <= prefix.Length) { e.SuppressKeyPress = true; } } if (e.KeyCode == Keys.Home && !hideNext) { input.Select(prefix.Length, 0); e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Up && !hideNext) { if (hIndex > 0) { hIndex -= 1; } if (hIndex != -1) { LoadHistory(); } } if (e.KeyCode == Keys.Down && !hideNext) { if ((hIndex + 1) == history.Count) { hIndex += 1; } if (hIndex >= history.Count) { input.Text = prefix; input.Select(input.Text.Length, 0); return; } hIndex += 1; LoadHistory(); } }
private void CRLFSocket_FailRead(object sender, ReadLineEventArgs e) { Assert.Fail("ReadLineイベントを発生させてはいけない"); }
private void _Worker(object sender, ReadLineEventArgs e) { // lets see if we have events or internal messagehandler for it _HandleEvents(MessageParser(e.Line)); }
private void _SimpleParser(object sender, ReadLineEventArgs args) { string rawline = args.Line; string[] rawlineex = rawline.Split(new char[] {' '}); string messagecode = ""; if (rawline[0] == ':') { messagecode = rawlineex[1]; ReplyCode replycode = ReplyCode.Null; try { replycode = (ReplyCode)int.Parse(messagecode); } catch (FormatException) { } if (replycode != ReplyCode.Null) { switch (replycode) { case ReplyCode.Welcome: _IsRegistered = true; #if LOG4NET Logger.Connection.Info("logged in"); #endif break; } } else { switch (rawlineex[1]) { case "PONG": DateTime now = DateTime.Now; _LastPongReceived = now; _Lag = now - _LastPingSent; #if LOG4NET Logger.Connection.Debug("PONG received, took: "+_Lag.TotalMilliseconds+" ms"); #endif break; } } } else { messagecode = rawlineex[0]; switch (messagecode) { case "ERROR": IsConnectionError = true; break; } } }
public void NetworkInquiryTest() { var peerManager = new PeerManager(); peerManager.ConnectionsChanged += (s, e) => { }; peerManager.PeerCount += () => { return(1000); }; peerManager.PeerId += () => { return(55); }; var peerList = new List <Client.Peer.Manager.Peer>(); int callCount = 0; for (int i = 0; i < 5; i++) { var crlfSocket = new CRLFSocket(); var peer = new Client.Peer.Manager.Peer(peerManager, crlfSocket); peer.PeerData = new Client.Common.General.PeerData("127.0.0." + (i + 1).ToString(), 6900 + i, 100 + i); peer.PeerId += () => { return(peerManager.PeerId()); }; peerList.Add(peer); var mockSocket = new Mock <ISocket>(); mockSocket.SetupGet(x => x.Connected).Returns(true); mockSocket.Setup(x => x.Send(It.IsAny <byte[]>())).Callback <byte[]>((k) => { var line = Encoding.ASCII.GetString(k); if (line.StartsWith("611")) { return; } callCount++; if (callCount < 5) { Assert.AreEqual("615 6 200:300\r\n", line); } if (callCount == 5) { Assert.AreEqual("635 1 200:300:55:100,101,102,103,104:5\r\n", line); } }); var crlfField = crlfSocket.GetType().GetField("socket", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance); crlfField.SetValue(crlfSocket, mockSocket.Object); } var field = peerManager.GetType().GetField("peerList", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance); field.SetValue(peerManager, peerList); var packet = new Packet(); packet.Code = 615; packet.Hop = 5; packet.Data = new string[] { "200", "300" }; var eventArgs = new ReadLineEventArgs(); eventArgs.line = packet.ToPacketString(); eventArgs.packet = packet; var type = peerManager.GetType(); type.InvokeMember( "Peer_ReadLine", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod, null, peerManager, new object[] { peerList[0], eventArgs } ); Assert.AreEqual(5, callCount); }