public void Scribble(String sender, byte[] img, int height) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafScribbleLeaf(ServerCore.Linker, this.Ident, sender, height, img)); } }
public void SendEmote(String sender, String text) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafEmoteTextToLeaf(ServerCore.Linker, this.Ident, sender, text)); } }
public void Print(iconnect.ILevel level, String text) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafPrintLevel(ServerCore.Linker, this.Ident, level, text)); } }
public void Print(ushort vroom, String text) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafPrintVroom(ServerCore.Linker, this.Ident, vroom, text)); } }
public void RestoreAvatar() { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "restoreavatar", String.Empty)); } }
public void Disconnect() { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "disconnect", String.Empty)); } }
public void Print(object text) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "print", text.ToString())); } }
public void Nudge(String sender) { if (this.CustomClient) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafNudge(ServerCore.Linker, this, sender)); } } }
public void URL(String address, String text) { if (!String.IsNullOrEmpty(address) && !String.IsNullOrEmpty(text)) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "url", address, text)); } } }
public void Topic(String text) { if (text != null) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "topic", text)); } } }
public void PM(String sender, String text) { if (!String.IsNullOrEmpty(sender) && !String.IsNullOrEmpty(text)) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "pm", sender, text)); } } }
public void SendEmote(String text) { if (!String.IsNullOrEmpty(text)) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "sendemote", text)); } } }
public void Redirect(String hashlink) { if (!String.IsNullOrEmpty(hashlink)) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUser(ServerCore.Linker, this, "redirect", hashlink)); } } }
public void BinaryWrite(byte[] data) { if (data != null) { if (ServerCore.Linker.Busy && ServerCore.Linker.LoginPhase == LinkLeaf.LinkLogin.Ready) { ServerCore.Linker.SendPacket(LeafOutbound.LeafIUserBin(ServerCore.Linker, this, "binary", data)); } } }
public void Service(ulong time) { if (!this.Busy) { return; } if (this.LoginPhase == LinkLogin.Sleeping) { if (time > (this.Time + 30000)) { this.LoginPhase = LinkLogin.Connecting; this.Time = time; this.Sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.Sock.Blocking = false; try { this.Sock.Connect(new IPEndPoint(this.ExternalIP, this.Port)); } catch { } } return; } if (this.LoginPhase == LinkLogin.Connecting) { if (this.Sock.Poll(0, SelectMode.SelectWrite)) { this.LoginPhase = LinkLogin.AwaitingAck; this.SendPacket(LeafOutbound.LeafLogin()); this.Time = time; this.LastPong = time; } else if (time > (this.Time + 15000)) { this.KillSocket(); if (this.CanReconnect) { this.Time = time; this.LoginPhase = LinkLogin.Sleeping; } else { this.Busy = false; } Events.LinkError(LinkError.UnableToConnect); } } else { core.LinkHub.LinkPacket packet = null; while ((packet = this.NextReceivedPacket) != null && this.SocketConnected) { try { LeafProcessor.Eval(this, packet.Msg, packet.Packet, time); } catch (Exception e) { this.KillSocket(); bool was_linked = this.LoginPhase == LinkLogin.Ready; if (this.CanReconnect) { this.Time = time; this.LoginPhase = LinkLogin.Sleeping; } else { this.Busy = false; } Events.LinkError(LinkError.BadProtocol); ServerCore.Log("packet read fail from hub " + packet.Msg, e); if (was_linked) { this.ClearUserlist(); } Events.Unlinked(); return; } } this.SendReceive(); if (!this.SocketConnected) { this.KillSocket(); bool unlink_fire = this.LoginPhase == LinkLogin.Ready; if (this.CanReconnect) { this.Time = time; this.LoginPhase = LinkLogin.Sleeping; } else { this.Busy = false; } Events.LinkError(LinkError.RemoteDisconnect); if (unlink_fire) { this.ClearUserlist(); Events.Unlinked(); } } else if (this.LoginPhase == LinkLogin.AwaitingAck) { if (time > (this.Time + 60000)) { this.KillSocket(); if (this.CanReconnect) { this.Time = time; this.LoginPhase = LinkLogin.Sleeping; } else { this.Busy = false; } Events.LinkError(LinkError.HandshakeTimeout); } } else if (this.LoginPhase == LinkLogin.Ready) { if (time > (this.Time + 60000)) { this.Time = time; this.SendPacket(LeafOutbound.LeafPing()); } if (time > (this.LastPong + 240000)) { this.KillSocket(); if (this.CanReconnect) { this.Time = time; this.LoginPhase = LinkLogin.Sleeping; } else { this.Busy = false; } Events.LinkError(LinkError.PingTimeout); this.ClearUserlist(); Events.Unlinked(); } } } }