public ServerMessage Handle(ValueHolder valueHolder = null) { ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); message.Init(r63aOutgoing.Navigator); message.AppendInt32(1); message.AppendString(valueHolder.GetValue <string>("Entry")); List <RoomData> rooms = valueHolder.GetValue <List <RoomData> >("Rooms"); message.AppendInt32(rooms.Count); foreach (RoomData roomData in rooms) { roomData.Serialize(message, false); } PublicItem publicRoom = valueHolder.GetValue <PublicItem>("PublicRoom"); if (publicRoom != null) { message.AppendBoolean(true); publicRoom.Serialize(message); } else { message.AppendBoolean(false); } return(message); }
/// <summary> /// Serializes the public rooms. /// </summary> /// <returns>ServerMessage.</returns> internal ServerMessage SerializePublicRooms() { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("OfficialRoomsMessageComposer")); PublicItem[] rooms = _publicItems.Values.Where(current => current.ParentId <= 0 && current.RoomData != null).ToArray(); serverMessage.AppendInteger(rooms.Length); foreach (PublicItem current in rooms) { current.Serialize(serverMessage); if (current.ItemType != PublicItemType.Category) { continue; } foreach (PublicItem current2 in _publicItems.Values.Where(x => x.ParentId == current.Id)) { current2.Serialize(serverMessage); } } if (!_publicItems.Values.Any(current => current.Recommended)) { serverMessage.AppendInteger(0); } else { PublicItem room = _publicItems.Values.First(current => current.Recommended); if (room != null) { serverMessage.AppendInteger(1); room.Serialize(serverMessage); } else { serverMessage.AppendInteger(0); } } serverMessage.AppendInteger(0); return(serverMessage); }