Пример #1
0
        /// <summary>
        /// Serialize to file.
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        public static Result SerializeXml(string filename, object p)
        {
            try
            {
                // Create folder if not exists.
                if (Directory.Exists(Path.GetDirectoryName(filename)) == false)
                {
                    DirectoryInfo info = Directory.CreateDirectory(Path.GetDirectoryName(filename));
                    if (info == null || info.Exists == false)
                    {
                        return(Result.Fail(string.Format("Failed to create directory [{0}].", Path.GetDirectoryName(filename))));
                    }
                }

                using (XmlWriter xw = XmlWriter.Create(filename))
                {
                    return(SerializationHelper.SerializeXml(xw, p));
                }
            }
            catch (Exception ex)
            {
                CoreSystemMonitor.OperationError("Failed to serialize object [" + p.ToString() + "] to xml file [" + filename + "].", ex);
                return(Result.Failure);
            }
        }
Пример #2
0
        /// <summary>
        /// Perform object serialization to a file.
        /// </summary>
        public static Result Serialize(string filename, object value)
        {
            try
            {
                // Create folder if not exists.
                if (Directory.Exists(Path.GetDirectoryName(filename)) == false)
                {
                    DirectoryInfo info = Directory.CreateDirectory(Path.GetDirectoryName(filename));
                    if (info == null || info.Exists == false)
                    {
                        return(Result.Fail(string.Format("Failed to create directory [{0}].", Path.GetDirectoryName(filename))));
                    }
                }

                byte[] data = SerializationHelper.Serialize(value);
                File.WriteAllBytes(filename, data);
            }
            catch (Exception ex)
            {
                string message = string.Format("Failed to serialize to file [{0}]", filename);
                CoreSystemMonitor.OperationError(message, ex);
                return(Result.Fail(message));
            }

            return(Result.Success);
        }
Пример #3
0
 /// <summary>
 /// Serialize to memory stream.
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="p"></param>
 /// <returns></returns>
 public static Result SerializeXml(MemoryStream stream, object p)
 {
     try
     {
         using (XmlWriter xw = XmlWriter.Create(stream))
         {
             return(SerializationHelper.SerializeXml(xw, p));
         }
     }
     catch (Exception ex)
     {
         CoreSystemMonitor.OperationError("Failed to serialize object [" + p.ToString() + "] to xml stream.", ex);
         return(Result.Fail(ex));
     }
 }
Пример #4
0
        /// <summary>
        /// Throws.
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        protected override object DeserializeData(Stream stream)
        {
            BinaryFormatter formatter = _formatter;

            if (formatter == null)
            {
                return(null);
            }

            try
            {
                return(formatter.Deserialize(stream));
            }
            catch (Exception ex)
            {
                CoreSystemMonitor.OperationError("Failed to deserialize object", ex);
                throw new InvalidDataException(ex.Message, ex);
            }
        }
Пример #5
0
        /// <summary>
        /// Helper, overrides.
        /// </summary>
        public static TType Deserialize <TType>(string filename)
            where TType : class
        {
            try
            {
                byte[] data = File.ReadAllBytes(filename);
                if (data != null)
                {
                    object dummy;
                    SerializationHelper.Deserialize(data, out dummy);
                    return((TType)dummy);
                }
            }
            catch (Exception ex)
            {
                CoreSystemMonitor.OperationError("Failed to extract proxies manager.", ex);
            }

            return(null);
        }
Пример #6
0
        /// <summary>
        /// Returns false if failed to serialize.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public bool Serialize(MemoryStream stream, object message)
        {
            if (message == null)
            {
                return(false);
            }

            long startPosition = stream.Position;

            // Placeholder.
            byte[] sizeBytes = BitConverter.GetBytes(int.MaxValue);
            stream.Write(sizeBytes, 0, sizeBytes.Length);

            if (SerializeData(stream, message) == false)
            {
                stream.Seek(startPosition, SeekOrigin.Begin);
                return(false);
            }

            int length = (int)stream.Position - (int)startPosition;

            long lastPosition = stream.Position;

            stream.Seek(startPosition, SeekOrigin.Begin);

            if (length > MaxMessageSize)
            {
                CoreSystemMonitor.OperationError("Message size too big.");
                return(false);
            }

            // Encoding (int.MaxValue - value); this helps diagnostics of message transport errors.
            sizeBytes = BitConverter.GetBytes(int.MaxValue - length);
            stream.Write(sizeBytes, 0, sizeBytes.Length);

            stream.Seek(lastPosition, SeekOrigin.Begin);

            return(true);
        }