public sealed override void ReadThis(Transaction trans, ByteArrayBuffer buffer) { int classCount = buffer.ReadInt(); InitTables(classCount); ObjectContainerBase container = Container(); int[] ids = ReadMetadataIds(buffer, classCount); ByteArrayBuffer[] metadataSlots = container.ReadSlotBuffers(trans, ids); for (int i = 0; i < classCount; ++i) { ClassMetadata classMetadata = new ClassMetadata(container, null); classMetadata.SetID(ids[i]); _classes.Add(classMetadata); _classMetadataByID.Put(ids[i], classMetadata); byte[] name = classMetadata.ReadName1(trans, metadataSlots[i]); if (name != null) { _classMetadataByBytes.Put(name, classMetadata); } } ApplyReadAs(); }
public override bool CreateClassMetadata(ClassMetadata clazz, IReflectClass claxx , ClassMetadata superClazz) { Write(Msg.CreateClass.GetWriterForString(SystemTransaction(), Config().ResolveAliasRuntimeName (claxx.GetName()))); Msg resp = GetResponse(); if (resp == null) { return false; } if (resp.Equals(Msg.Failed)) { // if the class can not be created on the server, send class meta to the server. SendClassMeta(claxx); resp = GetResponse(); } if (resp.Equals(Msg.Failed)) { if (ConfigImpl.ExceptionsOnNotStorable()) { throw new ObjectNotStorableException(claxx); } return false; } if (!resp.Equals(Msg.ObjectToClient)) { return false; } MsgObject message = (MsgObject)resp; StatefulBuffer bytes = message.Unmarshall(); if (bytes == null) { return false; } bytes.SetTransaction(SystemTransaction()); if (!base.CreateClassMetadata(clazz, claxx, superClazz)) { return false; } clazz.SetID(message.GetId()); clazz.ReadName1(SystemTransaction(), bytes); ClassCollection().AddClassMetadata(clazz); ClassCollection().ReadClassMetadata(clazz, claxx); return true; }
public override void ReadThis(Transaction trans, ByteArrayBuffer buffer) { var classCount = buffer.ReadInt(); InitTables(classCount); var container = Container(); var ids = ReadMetadataIds(buffer, classCount); var metadataSlots = container.ReadSlotBuffers(trans, ids); for (var i = 0; i < classCount; ++i) { var classMetadata = new ClassMetadata(container, null); classMetadata.SetID(ids[i]); _classes.Add(classMetadata); _classMetadataByID.Put(ids[i], classMetadata); var name = classMetadata.ReadName1(trans, metadataSlots[i]); if (name != null) { _classMetadataByBytes.Put(name, classMetadata); } } ApplyReadAs(); }