/// <summary> /// Writes the instance. /// </summary> internal static void Write(IBinaryRawWriter writer, IAffinityFunction fun) { if (fun == null) { writer.WriteByte(TypeCodeNull); return; } var p = fun as AffinityFunctionBase; if (p != null) { writer.WriteByte(p is FairAffinityFunction ? TypeCodeFair : TypeCodeRendezvous); writer.WriteInt(p.Partitions); writer.WriteBoolean(p.ExcludeNeighbors); } else { writer.WriteByte(TypeCodeUser); if (!fun.GetType().IsSerializable) { throw new IgniteException("AffinityFunction should be serializable."); } writer.WriteObject(fun); writer.WriteInt(fun.Partitions); // partition count is written once and can not be changed. } }
/// <summary> /// Writes the user function. /// </summary> private static void WriteUserFunc(IBinaryRawWriter writer, IAffinityFunction func, object funcOverride) { if (funcOverride != null) { writer.WriteObject(funcOverride); return; } if (func != null && !func.GetType().IsSerializable) { throw new IgniteException("AffinityFunction should be serializable."); } writer.WriteObject(func); }
/// <summary> /// Writes the instance. /// </summary> internal static void Write(IBinaryRawWriter writer, IAffinityFunction fun) { if (fun == null) { writer.WriteByte(TypeCodeNull); return; } var p = fun as AffinityFunctionBase; if (p != null) { ValidateAffinityFunctionType(p.GetType()); writer.WriteByte(p is FairAffinityFunction ? TypeCodeFair : TypeCodeRendezvous); writer.WriteInt(p.Partitions); writer.WriteBoolean(p.ExcludeNeighbors); } else { writer.WriteByte(TypeCodeUser); if (!fun.GetType().IsSerializable) throw new IgniteException("AffinityFunction should be serializable."); writer.WriteObject(fun); writer.WriteInt(fun.Partitions); // partition count is written once and can not be changed. } }
/// <summary> /// Writes the user function. /// </summary> private static void WriteUserFunc(IBinaryRawWriter writer, IAffinityFunction func, object funcOverride) { if (funcOverride != null) { writer.WriteObject(funcOverride); return; } if (func != null && !func.GetType().IsSerializable) throw new IgniteException("AffinityFunction should be serializable."); writer.WriteObject(func); }