public IEnumerable <string> Pack(int version, int eventId) { StringBuilder sb = new StringBuilder(); sb.Append((int)SockChatServerPacket.UserDisconnect); sb.Append(Constants.SEPARATOR); sb.Append(User.UserId); sb.Append(Constants.SEPARATOR); if (version < 2) { sb.Append(User.GetDisplayName(version)); sb.Append(Constants.SEPARATOR); } switch (Reason) { case UserDisconnectReason.Leave: default: sb.Append(@"leave"); break; case UserDisconnectReason.TimeOut: sb.Append(@"timeout"); break; case UserDisconnectReason.Kicked: sb.Append(@"kick"); break; case UserDisconnectReason.Flood: sb.Append(@"flood"); break; } sb.Append(Constants.SEPARATOR); sb.Append(Disconnected.ToUnixTimeSeconds()); sb.Append(Constants.SEPARATOR); sb.Append(eventId); return(new[] { sb.ToString() }); }