/// <summary> /// Put metadata to Grid. /// </summary> /// <param name="metas">Metadatas.</param> internal void PutMetadata(IDictionary <int, IPortableMetadata> metas) { DoOutOp(OpMeta, stream => { PortableWriterImpl metaWriter = _marsh.StartMarshal(stream); metaWriter.WriteInt(metas.Count); foreach (var meta in metas.Values) { PortableMetadataImpl meta0 = (PortableMetadataImpl)meta; metaWriter.WriteInt(meta0.TypeId); metaWriter.WriteString(meta0.TypeName); metaWriter.WriteString(meta0.AffinityKeyFieldName); IDictionary <string, int> fields = meta0.FieldsMap(); metaWriter.WriteInt(fields.Count); foreach (var field in fields) { metaWriter.WriteString(field.Key); metaWriter.WriteInt(field.Value); } } _marsh.FinishMarshal(metaWriter); }); _marsh.OnMetadataSent(metas); }