|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
|
using ZeroLevel.Services.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace ZeroLevel.Models
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Action result
|
|
|
|
|
/// </summary>
|
|
|
|
|
[DataContract]
|
|
|
|
|
public class InvokeResult :
|
|
|
|
|
IBinarySerializable
|
|
|
|
|
{
|
|
|
|
|
#region Static
|
|
|
|
|
|
|
|
|
|
private static readonly InvokeResult _successResultWitoutComment = new InvokeResult(true, String.Empty);
|
|
|
|
|
private static readonly InvokeResult _faultResultWitoutComment = new InvokeResult(false, String.Empty);
|
|
|
|
|
|
|
|
|
|
#endregion Static
|
|
|
|
|
|
|
|
|
|
#region Ctor
|
|
|
|
|
|
|
|
|
|
public InvokeResult()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public InvokeResult(bool success, string comment)
|
|
|
|
|
{
|
|
|
|
|
Success = success;
|
|
|
|
|
Comment = comment;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Ctor
|
|
|
|
|
|
|
|
|
|
#region Properties
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// true when action successfully invoked
|
|
|
|
|
/// </summary>
|
|
|
|
|
[DataMember]
|
|
|
|
|
public bool Success;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Comment
|
|
|
|
|
/// </summary>
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string Comment;
|
|
|
|
|
|
|
|
|
|
#endregion Properties
|
|
|
|
|
|
|
|
|
|
#region Fabric methods
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Error when action invoking
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static InvokeResult Fault(string comment) { return new InvokeResult(false, comment); }
|
|
|
|
|
|
|
|
|
|
public static InvokeResult Fault() { return _faultResultWitoutComment; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Successfully
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static InvokeResult Succeeding(string comment = "") { return new InvokeResult(true, comment); }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Successfully
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static InvokeResult Succeeding() { return _successResultWitoutComment; }
|
|
|
|
|
|
|
|
|
|
public static InvokeResult<T> Succeeding<T>(T value, string comment = "")
|
|
|
|
|
{
|
|
|
|
|
return new InvokeResult<T>(value, true, comment);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static InvokeResult<T> Fault<T>(string comment)
|
|
|
|
|
{
|
|
|
|
|
return new InvokeResult<T>(false, comment);
|
|
|
|
|
}
|
|
|
|
|
#endregion Fabric methods
|
|
|
|
|
|
|
|
|
|
public virtual void Serialize(IBinaryWriter writer)
|
|
|
|
|
{
|
|
|
|
|
writer.WriteBoolean(this.Success);
|
|
|
|
|
writer.WriteString(this.Comment);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void Deserialize(IBinaryReader reader)
|
|
|
|
|
{
|
|
|
|
|
this.Success = reader.ReadBoolean();
|
|
|
|
|
this.Comment = reader.ReadString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed class InvokeResult<T> :
|
|
|
|
|
InvokeResult
|
|
|
|
|
{
|
|
|
|
|
private T _value;
|
|
|
|
|
public T Value { get { return _value; } }
|
|
|
|
|
|
|
|
|
|
#region Ctor
|
|
|
|
|
|
|
|
|
|
public InvokeResult(bool success, string comment)
|
|
|
|
|
{
|
|
|
|
|
Success = success;
|
|
|
|
|
Comment = comment;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public InvokeResult(T value, bool success, string comment)
|
|
|
|
|
{
|
|
|
|
|
_value = value;
|
|
|
|
|
Success = success;
|
|
|
|
|
Comment = comment;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Ctor
|
|
|
|
|
|
|
|
|
|
public override void Serialize(IBinaryWriter writer)
|
|
|
|
|
{
|
|
|
|
|
writer.WriteBoolean(this.Success);
|
|
|
|
|
writer.WriteString(this.Comment);
|
|
|
|
|
writer.WriteCompatible(this.Value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void Deserialize(IBinaryReader reader)
|
|
|
|
|
{
|
|
|
|
|
this.Success = reader.ReadBoolean();
|
|
|
|
|
this.Comment = reader.ReadString();
|
|
|
|
|
this._value = reader.ReadCompatible<T>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|