コード例 #1
0
        public override void Serialize(ServiceHandlerContext holder)
        {
            using (var stream = new MemoryStream())
                using (var streamWriter = new StreamWriter(stream))
                    using (var textWriter = new JsonTextWriter(streamWriter))
                    {
                        mJsonSerializer.Serialize(textWriter, holder.Object);
                        streamWriter.Flush();
                        stream.Position = 0;
                        holder.SetBlob(stream.ToArray());
                    }

            holder.ContentType = Id + $"; type=\"{holder.Object.GetType().ToString()}\"";
        }
コード例 #2
0
        /// <summary>
        /// Encodes the blobs from uncompressed to compressed.
        /// </summary>
        /// <param name="holder">The holder.</param>
        /// <param name="getStream">The get compressor stream function.</param>
        /// <param name="contentEncoding">The content encoding parameter.</param>
        /// <returns>Returns true if encoded without error.</returns>
        /// <exception cref="ArgumentNullException">holder</exception>
        protected virtual bool Compress(ServiceHandlerContext holder, Func <Stream, Stream> getStream, string contentEncoding)
        {
            try
            {
                using (MemoryStream ms = new MemoryStream())
                    using (Stream compress = getStream(ms))
                    {
                        compress.Write(holder.Blob, 0, holder.Blob.Length);
                        compress.Close();

                        holder.SetBlob(ms.ToArray(), holder.ContentType, contentEncoding);
                    }
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
        /// <summary>
        /// Encodes the blobs from compressed to uncompressed.
        /// </summary>
        /// <param name="holder">The holder.</param>
        /// <param name="getStream">The decompress stream create function.</param>
        /// <returns>Returns true if encoded without error.</returns>
        protected virtual bool Decompress(ServiceHandlerContext holder, Func <Stream, Stream> getStream)
        {
            try
            {
                using (MemoryStream msIn = new MemoryStream(holder.Blob))
                    using (Stream decompress = getStream(msIn))
                        using (MemoryStream msOut = new MemoryStream())
                        {
                            decompress.CopyTo(msOut);
                            decompress.Close();
                            holder.SetBlob(msOut.ToArray(), holder.ContentType);
                        }
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(true);
        }
コード例 #4
0
        /// <summary>
        /// Serializes the summary JSON object in the holder and sets the byte array.
        /// </summary>
        /// <param name="holder">The holder to set.</param>
        public override void Serialize(ServiceHandlerContext holder)
        {
            var stats = holder.Object as Microservice.Statistics;

            if (stats == null)
            {
                throw new ArgumentOutOfRangeException("The holder object is not of type MicroserviceStatistics");
            }

            dynamic message = new ExpandoObject();

            message.Id     = stats.Id.ExternalServiceId;
            message.Status = stats.Status;
            message.TS     = DateTime.UtcNow.ToBinary();
            message.Engine = $"{stats.Id.ServiceVersionId}/{stats.Id.ServiceEngineVersionId}";
            message.Uptime = stats.Uptime;

            message.Tasks = stats.Tasks.Message;

            var authorData = JsonConvert.SerializeObject(message);

            holder.SetBlob(Encoding.UTF8.GetBytes(authorData), maxLength: UdpHelper.PacketMaxSize);
        }