Thema: [C#] TokenParser
-
15.02.2011, 10:24 #1
- Registriert seit
- 13.02.2011
- Beiträge
- 54
Thanked 79 Times in 49 Posts[C#] TokenParser
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KNBot
{
class KNClient
{
KNLib.Applet applet = new KNLib.Applet();
KNLib.Client client;
public delegate void voidHandler();
public delegate void oneStringHandler(String handler);
public delegate void twoStringHandler(String handler,String handler2);
public delegate void threeStringHandler(String handler,String handler2, String handler3);
private bool loginAble = false;
public event threeStringHandler newPrivate;
public event threeStringHandler newPublic;
public event twoStringHandler newMe;
public event threeStringHandler newPopup;
public event threeStringHandler newUser;
public event oneStringHandler userLeft;
public event oneStringHandler allTokens;
public event oneStringHandler leftTokens;
public bool isLoginAble()
{ return loginAble; }
public void logout()
{
client.Send("d\0");
}
public int timeLeft()
{
return (int)(lastAction + 600 - time());
}
public void sendToken(String token)
{
lastAction = time();
client.Send(token);
}
private void handleTokens(KNLib.Client client, String tokenO)
{
String[] token = tokenO.Split('\0');
tokenO = tokenO.Replace("\0", "\\0");
if (allTokens != null) allTokens(tokenO);
if (token[0] == "(") loginAble = true;
else if (token[0] == "r" && newPrivate != null) newPrivate(token[1], token[2], token[4]);
else if (token[0] == "e" && newPublic != null) newPublic(token[1], token[3], tokenO);
else if (token[0] == "k" && newPopup != null) newPopup(token[1], token[4], token[7]);
else if (token[0] == "l" && newUser != null) newUser(token[2].Split('\n')[0], token[5], token[6]);
else if (token[0] == "w" && userLeft != null) userLeft(token[1]);
else if (token[0] == "t" && newMe != null) newMe(token[1], token[3]);
else if (token[0] == "u" && newUser != null)
{
//\0-\0
string[] stringSeparators = new string[] { "\\0-\\0" };
String[] result = tokenO.Split(stringSeparators, StringSplitOptions.None);
stringSeparators = new string[] { "\\0" };
for(int i = 1; i < result.Length; i++)
{
String[] user = result[i].Split(stringSeparators, StringSplitOptions.None);
newUser(user[0].Split('\n')[0], user[1], user[2]);
}
}
else if (leftTokens != null) leftTokens(tokenO);
}
long lastAction;
private long time()
{
return (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
}
public void login(String nick, String pass, String chan)
{
client.Login(nick, pass, chan);
}
public KNClient()
{
client = new KNLib.Client(applet);
client.Receive += new KNLib.Client.ReceiveHandler(this.handleTokens);
}
public void connect(String host, int port)
{
client.Connect(host, port);
lastAction = time();
}
public void connect(String host, int port, String proxy, int proxyport)
{
client.Connect(host,port,proxy, proxyport);
lastAction = time();
}
public void disconnect()
{
client.Disconnect();
}
public String toString()
{
return client.ToString();
}
}
}
P.S. Es ist noch nicht vollständig!
Handler:
allTokens - String Original // alle Tokens => vgl ReceiveHandler
newPrivate - String Sender, String Empfänger, String Nachricht //bei neuer P-Nachricht
newPublic - String Sender, String Nachricht, String OriginalNachricht // bei neuer Öffentlichen Nachricht
newPopup - String title, Sting header, String text // Wenn ein Popup sich öffnen soll
newUser - String Name, String Farbe, String Bilder // wenn ein User joined (auch bei Userliste laden)
newMe - String User, String nachricht //wenn eine neue Aktion (t-Token stattfindet)
userLeft - String user //wenn ein User leaved
leftTokens - String OriginalToken //wenn andere Tokens vorhanden sind
Wichtig: Die Tokens sind nicht per 0-Char bei mir getrennt, sondern per "\\0"
Keine Garantie auf vollständigkeit und richtigkeit.
Ähnliche Themen
-
[VB.NET] KNLiB TokenParser
Von Diebspiel im Forum SourcecodeAntworten: 4Letzter Beitrag: 19.02.2011, 16:59
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.