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);
        }
Esempio n. 2
0
        /// <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);
        }