/// <exception cref="System.IO.IOException" /> private IFieldDefinition SetPosition(string fieldName, FieldType fieldType) { if (_raw) { throw new HazelcastSerializationException( "Cannot write Portable fields after getRawDataOutput() is called!"); } var fd = _cd.GetField(fieldName); if (fd == null) { throw new HazelcastSerializationException("Invalid field name: '" + fieldName + "' for ClassDefinition {id: " + _cd.GetClassId() + ", version: " + _cd.GetVersion() + "}"); } if (_writtenFields.Add(fieldName)) { var pos = _out.Position(); var index = fd.GetIndex(); _out.WriteInt(_offset + index * Bits.IntSizeInBytes, pos); _out.WriteShort(fieldName.Length); _out.WriteBytes(fieldName); _out.WriteByte((byte)fieldType); } else { throw new HazelcastSerializationException("Field '" + fieldName + "' has already been written!"); } return(fd); }