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); }
/// <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); }