示例#1
0
 //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);
         }
     }
 }
示例#2
0
        internal static void RecieveBufferedObject(KNetSerializedField serializedField)
        {
            KNetView view = KlivenNet.FindView(serializedField.viewId);

            if (view == null)
            {
                KNetLogger.LogError($"KNetClient: could not Recieve buffered object: KNetView of id {serializedField.viewId}: view does not exist.");
                return;
            }
            var field = serializedField.fieldId < view.BufferedFields.Length ? view.BufferedFields[serializedField.fieldId] : null;

            if (field == null)
            {
                KNetLogger.LogError($"KNetClient: could not Recieve buffered object: KNetView of id {serializedField.viewId}: field id {serializedField.fieldId} is not defined.");
                return;
            }
            field.SetValue(view, KNetUtils.Deserialize(serializedField.data, serializedField.count
                                                       , KNetUtils.IsSerializable(field.FieldType), field.FieldType));
        }