private void ValidateField(Field field) { if (Schema != field.Schema) throw new SchemaException("Attempt to access field '" + field.Name + "' from a different schema instance."); if (field.Index > values.Length) throw new SchemaException("Invalid field index: " + field.Index); }
public object Get(Field field) { ValidateField(field); return GetFieldOrDefault(field); }
public Struct Set(Field field, object value) { ValidateField(field); values[field.Index] = value; return this; }
private object GetFieldOrDefault(Field field) { var value = values[field.Index]; if (value != null) return value; if (field.DefaultValue != Field.NO_DEFAULT) return field.DefaultValue; throw new SchemaException("Missing value for field '" + field.Name + "' which has no default value."); }
public Struct GetStruct(Field field) { return (Struct) Get(field); }
public Struct Instance(Field field) { ValidateField(field); if (field.Type is Schema) { return new Struct((Schema) field.Type); } if (field.Type is KafkaArrayOf) { var array = (KafkaArrayOf) field.Type; return new Struct((Schema) array.Type); } throw new SchemaException("Field '" + field.Name + "' is not a container type, it is of type " + field.Type); }
public short GetShort(Field field) { return (short) Get(field); }
public string GetString(Field field) { return (string) Get(field); }
public long GetInt64(Field field) { return (long) Get(field); }
public int GetInt(Field field) { return (int) Get(field); }
public MemoryStream GetBytes(Field field) { var result = Get(field); if (result is byte[]) return new MemoryStream((byte[]) result); return (MemoryStream) result; }
public byte GetByte(Field field) { return (byte) Get(field); }
public object[] GetArray(Field field) { return (object[]) Get(field); }