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()}\""; }
/// <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); }
/// <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); }
/// <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); }