Пример #1
0
        public void ProcessFullUpdate(NetworkStringListFullUpdate update)
        {
            if (update == null)
            {
                throw new ArgumentNullException(nameof(update));
            }

            var list = FindByName(update.Name);

            _idToListMap[update.ListId] = list ?? throw new InvalidOperationException($"Full update received for non-existent table \"{update.Name}\"");

            ProcessStringData(update.Strings, list);
        }
Пример #2
0
        /// <summary>
        /// Create a full update for the given table
        /// All data is sent
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public NetworkStringListFullUpdate CreateFullUpdate(int index)
        {
            if (index < 0 || index >= Count)
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }

            var list = this[index];

            var update = new NetworkStringListFullUpdate
            {
                ListId = (uint)index,
                Name   = list.Name
            };

            var binaryDataBuffer = new MemoryStream();

            for (var i = 0; i < list.Count; ++i)
            {
                update.Strings.Add(CreateStringDataFor(binaryDataBuffer, list, i));
            }

            return(update);
        }