예제 #1
0
파일: Message.cs 프로젝트: uzbekdev1/nfx
        public void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
        {
            serializer.AddTypeIDField(doc, parent, this, context);

            var skipNull = (serializer.Flags ^ BSONSerializationFlags.KeepNull) == 0;

            doc.Add(serializer.PKFieldName, m_Guid, required: true)
            .Add(BSON_FLD_RELATED_TO, m_RelatedTo, skipNull)
            .Add(BSON_FLD_TYPE, m_Type.ToString(), skipNull, required: true)
            .Add(BSON_FLD_SOURCE, m_Source, skipNull)
            .Add(BSON_FLD_TIMESTAMP, m_TimeStamp.ToUniversalTime(), skipNull)
            .Add(BSON_FLD_HOST, m_Host, skipNull)
            .Add(BSON_FLD_FROM, m_From, skipNull)
            .Add(BSON_FLD_TOPIC, m_Topic, skipNull)
            .Add(BSON_FLD_TEXT, m_Text, skipNull)
            .Add(BSON_FLD_PARAMETERS, m_Parameters, skipNull)
            .Add(BSON_FLD_ARCHIVE_DIMENSIONS, m_ArchiveDimensions, skipNull)
            .Add(BSON_FLD_CHANNEL, m_Channel, skipNull);

            if (m_Exception == null)
            {
                return;
            }

            var we = m_Exception as WrappedException;

            if (we == null)
            {
                we = WrappedException.ForException(m_Exception);
            }

            doc.Add(BSON_FLD_EXCEPTION, serializer.Serialize(we, parent: this), skipNull);
        }
예제 #2
0
        /// <summary>
        /// Adds a field named TypeIDFieldName with the type id of the object instance, force=true to emit the field even if it is a known type.
        /// Returns true if type id element was added
        /// </summary>
        public virtual bool AddTypeIDField(BSONDocument doc, IBSONSerializable parent, IBSONSerializable self, object ctx, bool force = false)
        {
            if (doc == null)
            {
                return(false);
            }
            if (self == null)
            {
                return(false);
            }

            var add = force || parent == null;
            var t   = self.GetType();

            if (!add)
            {
                add = !parent.IsKnownTypeForBSONDeserialization(t);
            }

            if (add)
            {
                var id = BSONSerializableAttribute.GetGuidTypeAttribute <object, BSONSerializableAttribute>(t)
                         .TypeGuid;

                var telm = new BSONBinaryElement(TypeIDFieldName, new BSONBinary(BSONBinaryType.UUID, id.ToByteArray()));
                doc.Set(telm);
                return(true);
            }

            return(false);
        }
예제 #3
0
            public void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
            {
                serializer.AddTypeIDField(doc, parent, this, context);

                doc.Add(serializer.PKFieldName, Guid, required: true);
                doc.Add(BSON_FLD_TRUE, True);
                doc.Add(BSON_FLD_FALSE, False);
                doc.Add(BSON_FLD_CHARMIN, CharMin);
                doc.Add(BSON_FLD_CHARMAX, CharMax);
                doc.Add(BSON_FLD_SBYTEMIN, SByteMin);
                doc.Add(BSON_FLD_SBYTEMAX, SByteMax);
                doc.Add(BSON_FLD_BYTEMIN, ByteMin);
                doc.Add(BSON_FLD_BYTEMAX, ByteMax);
                doc.Add(BSON_FLD_INT16MIN, Int16Min);
                doc.Add(BSON_FLD_INT16MAX, Int16Max);
                doc.Add(BSON_FLD_UINT16MIN, UInt16Min);
                doc.Add(BSON_FLD_UINT16MAX, UInt16Max);
                doc.Add(BSON_FLD_INT32MIN, Int32Min);
                doc.Add(BSON_FLD_INT32MAX, Int32Max);
                doc.Add(BSON_FLD_UINT32MIN, UInt32Min);
                doc.Add(BSON_FLD_UINT32MAX, UInt32Max);
                doc.Add(BSON_FLD_INT64MIN, Int64Min);
                doc.Add(BSON_FLD_INT64MAX, Int64Max);
                doc.Add(BSON_FLD_UINT64MIN, UInt64Min);
                doc.Add(BSON_FLD_UINT64MAX, UInt64Max);
                doc.Add(BSON_FLD_SINGLEEPS, SingleEps);
                doc.Add(BSON_FLD_SINGLEMIN, SingleMin);
                doc.Add(BSON_FLD_SINGLEMAX, SingleMax);
                doc.Add(BSON_FLD_SINGLENAN, SingleNaN);
                doc.Add(BSON_FLD_SINGLEPOSINF, SinglePosInf);
                doc.Add(BSON_FLD_SINGLENEGINF, SingleNegInf);
                doc.Add(BSON_FLD_DOUBLEEPS, DoubleEps);
                doc.Add(BSON_FLD_DOUBLEMIN, DoubleMin);
                doc.Add(BSON_FLD_DOUBLEMAX, DoubleMax);
                doc.Add(BSON_FLD_DOUBLENAN, DoubleNaN);
                doc.Add(BSON_FLD_DOUBLEPOSINF, DoublePosInf);
                doc.Add(BSON_FLD_DOUBLENEGINF, DoubleNegInf);
                doc.Add(BSON_FLD_DECIMALMIN, DecimalMin);
                doc.Add(BSON_FLD_DECIMALMAX, DecimalMax);
                doc.Add(BSON_FLD_DECIMALZERO, DecimalZero);
                doc.Add(BSON_FLD_DECIMALONE, DecimalOne);
                doc.Add(BSON_FLD_DECIMALMONE, DecimalMOne);
                doc.Add(BSON_FLD_DATETIMEMIN, DateTimeMin);
                doc.Add(BSON_FLD_DATETIMEMAX, DateTimeMax);
                doc.Add(BSON_FLD_DATETIMENOW, DateTimeNow);
                doc.Add(BSON_FLD_DATETIMEUTC, DateTimeUtc);
                doc.Add(BSON_FLD_TIMESPANMIN, TimeSpanMin);
                doc.Add(BSON_FLD_TIMESPANMAX, TimeSpanMax);
                doc.Add(BSON_FLD_STRINGEMPTY, StringEmpty);
                doc.Add(BSON_FLD_STRINGNULL, StringNull);
                doc.Add(BSON_FLD_STRING, String);
            }
예제 #4
0
        /// <summary>
        /// Serializes an instance directly into BSONDocument
        /// </summary>
        public BSONDocument Serialize(IBSONSerializable payload, IBSONSerializable parent = null)
        {
            if (payload == null)
            {
                return(null);
            }

            object ctx    = null;
            var    result = new BSONDocument();

            try
            {
                payload.SerializeToBSON(this, result, parent, ref ctx);
            }
            catch (Exception error)
            {
                throw new BSONException(StringConsts.BSON_SERIALIZER_STB_ERROR.Args(error.ToMessageWithType()), error);
            }
            return(result);
        }
예제 #5
0
        public void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
        {
            serializer.AddTypeIDField(doc, parent, this, context);

            doc.Set(new BSONStringElement("tname", TypeName))
            .Set(new BSONStringElement("msg", Message))
            .Set(new BSONInt32Element("code", Code))
            .Set(new BSONStringElement("app", ApplicationName))
            .Set(new BSONStringElement("src", Source))
            .Set(new BSONStringElement("trace", StackTrace));

            if (WrappedData != null)
            {
                doc.Set(new BSONStringElement("wdata", WrappedData));
            }

            if (m_InnerException == null)
            {
                return;
            }

            doc.Set(new BSONDocumentElement("inner", serializer.Serialize(m_InnerException, parent: this)));
        }
예제 #6
0
        public virtual void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
        {
            serializer.AddTypeIDField(doc, parent, this, context);

            doc.Add(BSON_FLD_COUNT, m_Count)
            .Add(BSON_FLD_TIME, m_UTCTime);
            if (m_Count > 0)
            {
                doc.Add(BSON_FLD_END_TIME, m_UTCEndTime);
            }

            if ((serializer.Flags & BSONSerializationFlags.UIOnly) == 0)
            {
                doc.Add(BSON_FLD_SOURCE, Source);
            }
        }
예제 #7
0
 public void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
 {
     serializer.AddTypeIDField(doc, parent, this, context);
     doc.Set(new BSONDocumentElement("wrp", serializer.Serialize(m_Wrapped, parent: this)));
 }
예제 #8
0
 public override void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
 {
     base.SerializeToBSON(serializer, doc, parent, ref context);
     doc.Add(BSON_FLD_VALUE, m_Value);
 }
예제 #9
0
 public override void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
 {
     base.SerializeToBSON(serializer, doc, parent, ref context);
     doc.Set(DataDocConverter.Amount_CLRtoBSON(BSON_FLD_VALUE, m_Value));
 }
예제 #10
0
 public override void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
 {
     base.SerializeToBSON(serializer, doc, parent, ref context);
     doc.Add(BSON_FLD_EXCEPTION_TYPE, m_ExceptionType);
 }
예제 #11
0
 public void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
 {
     throw new NotSupportedException();
 }
예제 #12
0
        public override void SerializeToBSON(BSONSerializer serializer, BSONDocument doc, IBSONSerializable parent, ref object context)
        {
            base.SerializeToBSON(serializer, doc, parent, ref context);

            doc.Add(BSON_FLD_ENTITY, m_Entity);
            doc.Add(BSON_FLD_G_SHARD, m_G_Shard.ToString());
            doc.Add(BSON_FLD_G_ENTITY, m_G_Entity.ToString());
            doc.Add(BSON_FLD_DIMS, m_Dimensions);
        }