//public static List<KNetSerializedField> DEBUG_SEND_BUFFERED_VALUES() { // return SendBufferedValues(); //} internal void SendBufferedValues(KNetConnection newClient) { //List<KNetSerializedField> serializedFields = new List<KNetSerializedField>(); foreach (var view in KlivenNet.Views) { int buffFieldId = -1; foreach (var bufferedField in view.BufferedFields) { buffFieldId++; var fieldType = bufferedField.FieldType; var bufferable = KNetUtils.IsSerializable(fieldType); if (bufferable == SerializableType.nonSerializable) { KNetLogger.LogError($"KNetServer: could not serialize field {bufferedField.Name} on KNetView {view.Id}: does {bufferedField.DeclaringType.Name} implement KNetSerializable interface?"); continue; } // Console.WriteLine(bufferedField.Name + " is bufferable: " + bufferable); var bytes = KNetUtils.Serialize(bufferedField.GetValue(view), bufferable, out int count); if (bytes == null) { continue; } var serializedField = new KNetSerializedField(view.Id, buffFieldId, bytes); serializedField.count = count; var packet = KNetUtils.ConstructPacket(KNetUtils.PacketType.bufferedObject, serializedField); SendBytes(newClient, packet); } } }
public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("counts", Counts); info.AddValue("rpcInfo", RpcInfo.KNetSerializeReference()); byte[][] serializedArgs = new byte[Arguments.Length][]; for (int i = 0; i < serializedArgs.Length; i++) { serializedArgs[i] = KNetUtils.Serialize(Arguments[i], RpcInfo.ArgSerializationTypes[i], out Counts[i]); } info.AddValue("args", serializedArgs); }