diff --git a/src/mono/WampSharp/WampSharp.csproj b/src/mono/WampSharp/WampSharp.csproj index 98f3156fc..ebbc7c9f3 100644 --- a/src/mono/WampSharp/WampSharp.csproj +++ b/src/mono/WampSharp/WampSharp.csproj @@ -260,6 +260,9 @@ Core\Utilities\Method.cs + + Core\Utilities\SerializableAttribute.cs + Core\Utilities\ReadOnlyDictionary.cs diff --git a/src/net40/WampSharp/WampSharp.csproj b/src/net40/WampSharp/WampSharp.csproj index 48bc6a266..05b475078 100644 --- a/src/net40/WampSharp/WampSharp.csproj +++ b/src/net40/WampSharp/WampSharp.csproj @@ -264,6 +264,9 @@ Core\Utilities\Method.cs + + Core\Utilities\SerializableAttribute.cs + Core\Utilities\ReadOnlyDictionary.cs diff --git a/src/net45/WampSharp.WAMP1/WAMP1/V1/Api/Server/WampRequestContext.cs b/src/net45/WampSharp.WAMP1/WAMP1/V1/Api/Server/WampRequestContext.cs index 5080f6cde..fbd3893c5 100644 --- a/src/net45/WampSharp.WAMP1/WAMP1/V1/Api/Server/WampRequestContext.cs +++ b/src/net45/WampSharp.WAMP1/WAMP1/V1/Api/Server/WampRequestContext.cs @@ -5,9 +5,7 @@ namespace WampSharp.V1 { -#if !PCL [Serializable] -#endif public class WampRequestContext { #region Static Members diff --git a/src/net45/WampSharp/Core/Utilities/SerializableAttribute.cs b/src/net45/WampSharp/Core/Utilities/SerializableAttribute.cs new file mode 100644 index 000000000..18c90775c --- /dev/null +++ b/src/net45/WampSharp/Core/Utilities/SerializableAttribute.cs @@ -0,0 +1,16 @@ +#if PCL + +namespace System +{ + [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] + internal sealed class SerializableAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)] + internal sealed class NonSerializedAttribute : Attribute + { + } +} + +#endif \ No newline at end of file diff --git a/src/net45/WampSharp/WAMP2/V2/Api/WampEventContext.cs b/src/net45/WampSharp/WAMP2/V2/Api/WampEventContext.cs index aabb7bb41..1e8f380a6 100644 --- a/src/net45/WampSharp/WAMP2/V2/Api/WampEventContext.cs +++ b/src/net45/WampSharp/WAMP2/V2/Api/WampEventContext.cs @@ -9,9 +9,7 @@ namespace WampSharp.V2 /// /// Includes information about the current event. /// -#if !PCL [Serializable] -#endif public class WampEventContext { diff --git a/src/net45/WampSharp/WAMP2/V2/Api/WampInvocationContext.cs b/src/net45/WampSharp/WAMP2/V2/Api/WampInvocationContext.cs index db01a14eb..bd7290c00 100644 --- a/src/net45/WampSharp/WAMP2/V2/Api/WampInvocationContext.cs +++ b/src/net45/WampSharp/WAMP2/V2/Api/WampInvocationContext.cs @@ -10,9 +10,7 @@ namespace WampSharp.V2 /// /// Includes information about the current invocation. /// -#if !PCL [Serializable] -#endif public class WampInvocationContext { #region Static Members diff --git a/src/net45/WampSharp/WAMP2/V2/Authentication/WampAuthenticationException.cs b/src/net45/WampSharp/WAMP2/V2/Authentication/WampAuthenticationException.cs index fec114ccf..ef8ec0129 100644 --- a/src/net45/WampSharp/WAMP2/V2/Authentication/WampAuthenticationException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Authentication/WampAuthenticationException.cs @@ -7,9 +7,7 @@ namespace WampSharp.V2.Authentication /// An exception that can be thrown if can't authenticate with router. /// This sends an ABORT message to the router. /// -#if !PCL [Serializable] -#endif public class WampAuthenticationException : Exception { protected const string DefaultMessage = "sorry, I cannot authenticate (onchallenge handler raised an exception)"; diff --git a/src/net45/WampSharp/WAMP2/V2/Client/Session/WampAuthenticationNotImplementedException.cs b/src/net45/WampSharp/WAMP2/V2/Client/Session/WampAuthenticationNotImplementedException.cs index f104672ab..8bd0e6c92 100644 --- a/src/net45/WampSharp/WAMP2/V2/Client/Session/WampAuthenticationNotImplementedException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Client/Session/WampAuthenticationNotImplementedException.cs @@ -8,9 +8,7 @@ namespace WampSharp.V2.Client /// Occurs when an CHALLENGE message has been received, /// but no has been provided. /// -#if !PCL [Serializable] -#endif public class WampAuthenticationNotImplementedException : WampAuthenticationException { /// diff --git a/src/net45/WampSharp/WAMP2/V2/Client/WampSessionNotEstablishedException.cs b/src/net45/WampSharp/WAMP2/V2/Client/WampSessionNotEstablishedException.cs index fea0b9916..b49df9ff8 100644 --- a/src/net45/WampSharp/WAMP2/V2/Client/WampSessionNotEstablishedException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Client/WampSessionNotEstablishedException.cs @@ -3,9 +3,7 @@ namespace WampSharp.V2.Client { -#if !PCL [Serializable] -#endif public class WampSessionNotEstablishedException : Exception { public WampSessionNotEstablishedException() : this("No connection to router is currently available.") diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/EventDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/EventDetails.cs index 8f89b35ac..51a519e30 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/EventDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/EventDetails.cs @@ -1,3 +1,4 @@ +using System; using System.Runtime.Serialization; using WampSharp.Core.Message; @@ -7,6 +8,7 @@ namespace WampSharp.V2.Core.Contracts /// Represents details for EVENT message. /// [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Event)] public class EventDetails : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptions.cs index 3d3a94015..5bf66ef4e 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptions.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Publish)] public class PublishOptions : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptionsExtended.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptionsExtended.cs index 68962f004..5c96191f8 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptionsExtended.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/PublishOptionsExtended.cs @@ -1,8 +1,10 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] public class PublishOptionsExtended : PublishOptions { public PublishOptionsExtended(PublishOptions options) : base(options) diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/SubscribeOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/SubscribeOptions.cs index 169bbc271..645f6c706 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/SubscribeOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/PubSub/SubscribeOptions.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Subscribe)] public class SubscribeOptions : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CallOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CallOptions.cs index 0d2ecb68c..af6a3a033 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CallOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CallOptions.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Call)] public class CallOptions : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CancelOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CancelOptions.cs index 1ad9813c4..cdcc2c502 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CancelOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/CancelOptions.cs @@ -1,8 +1,12 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; +using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] + [WampDetailsOptions(WampMessageType.v2Cancel)] public class CancelOptions : WampDetailsOptions { } diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetails.cs index 74f828c8d..2131b9e2f 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetails.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Invocation)] public class InvocationDetails : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetailsExtended.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetailsExtended.cs index 56bbfaa62..c06015a50 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetailsExtended.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/InvocationDetailsExtended.cs @@ -1,8 +1,10 @@ +using System; using System.Runtime.Serialization; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] public class InvocationDetailsExtended : InvocationDetails { public InvocationDetailsExtended() diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/RegisterOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/RegisterOptions.cs index b65eeebca..81e8de040 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/RegisterOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/RegisterOptions.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Register)] public class RegisterOptions : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/ResultDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/ResultDetails.cs index e1d3c508f..9565b132f 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/ResultDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/ResultDetails.cs @@ -1,9 +1,11 @@ +using System; using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Result)] public class ResultDetails : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/YieldOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/YieldOptions.cs index f51bee751..4f1117e25 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/YieldOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Rpc/YieldOptions.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Yield)] public class YieldOptions : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AbortDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AbortDetails.cs index cd31d260e..d3eaa2a11 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AbortDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AbortDetails.cs @@ -1,4 +1,6 @@ +using System; using System.Runtime.Serialization; +using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { @@ -6,6 +8,8 @@ namespace WampSharp.V2.Core.Contracts /// Represents details of an ABORT message. /// [DataContract] + [Serializable] + [WampDetailsOptions(WampMessageType.v2Abort)] public class AbortDetails : GoodbyeAbortDetails { } diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AuthenticateExtraData.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AuthenticateExtraData.cs index 21a55c245..bf67e5bcc 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AuthenticateExtraData.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/AuthenticateExtraData.cs @@ -1,7 +1,11 @@ +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { + [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Authenticate)] public class AuthenticateExtraData : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/ChallengeDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/ChallengeDetails.cs index ed7a570d5..374992c64 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/ChallengeDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/ChallengeDetails.cs @@ -1,8 +1,12 @@ +using System; using System.Runtime.Serialization; +using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] + [WampDetailsOptions(WampMessageType.v2Challenge)] public class ChallengeDetails : WampDetailsOptions { } diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeAbortDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeAbortDetails.cs index 4e4536821..08549bac9 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeAbortDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeAbortDetails.cs @@ -1,8 +1,10 @@ +using System; using System.Runtime.Serialization; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] public abstract class GoodbyeAbortDetails : WampDetailsOptions { /// diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeDetails.cs index beb236630..edcedfe29 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/GoodbyeDetails.cs @@ -1,4 +1,6 @@ +using System; using System.Runtime.Serialization; +using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { @@ -6,6 +8,8 @@ namespace WampSharp.V2.Core.Contracts /// Represents details of a GOODBYE message. /// [DataContract] + [Serializable] + [WampDetailsOptions(WampMessageType.v2Goodbye)] public class GoodbyeDetails : GoodbyeAbortDetails { } diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/HelloDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/HelloDetails.cs index 704319fe9..fda7853bb 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/HelloDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/HelloDetails.cs @@ -1,3 +1,4 @@ +using System; using System.Runtime.Serialization; using WampSharp.Core.Message; using WampSharp.V2.MetaApi; @@ -5,6 +6,7 @@ namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Hello)] public class HelloDetails : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/WelcomeDetails.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/WelcomeDetails.cs index d9c068965..9baf3ebec 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/WelcomeDetails.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/Session/WelcomeDetails.cs @@ -1,9 +1,11 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; using WampSharp.Core.Message; namespace WampSharp.V2.Core.Contracts { [DataContract] + [Serializable] [WampDetailsOptions(WampMessageType.v2Welcome)] public class WelcomeDetails : WampDetailsOptions { diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampConnectionBrokenException.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampConnectionBrokenException.cs index 7fcb001e7..f0589bd4e 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampConnectionBrokenException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampConnectionBrokenException.cs @@ -4,9 +4,7 @@ namespace WampSharp.V2.Core.Contracts { -#if !PCL [Serializable] -#endif public class WampConnectionBrokenException : Exception { private readonly WampSessionCloseEventArgs mEventArgs; diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampDetailsOptions.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampDetailsOptions.cs index c60e4fd95..e2e5ecdca 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampDetailsOptions.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampDetailsOptions.cs @@ -1,21 +1,26 @@ -using System.Runtime.Serialization; +using System; +using System.Runtime.Serialization; namespace WampSharp.V2.Core.Contracts { /// /// An abstract class for WampDetails/WampOptions types. /// + [Serializable] [DataContract] public abstract class WampDetailsOptions { + [NonSerialized] + private ISerializedValue mOriginalValue; + /// /// The original (serialized) received value. /// [IgnoreDataMember] public ISerializedValue OriginalValue { - get; - set; + get { return mOriginalValue; } + set { mOriginalValue = value; } } } } \ No newline at end of file diff --git a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampException.cs b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampException.cs index 736b00f6e..7b408feca 100644 --- a/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Core/Contracts/WampException.cs @@ -5,9 +5,7 @@ namespace WampSharp.V2.Core.Contracts { -#if !PCL [Serializable] -#endif public class WampException : Exception { private readonly string mErrorUri; diff --git a/src/net45/WampSharp/WAMP2/V2/Rpc/WampRpcRuntimeException.cs b/src/net45/WampSharp/WAMP2/V2/Rpc/WampRpcRuntimeException.cs index 2e608f4ed..bbb99b540 100644 --- a/src/net45/WampSharp/WAMP2/V2/Rpc/WampRpcRuntimeException.cs +++ b/src/net45/WampSharp/WAMP2/V2/Rpc/WampRpcRuntimeException.cs @@ -5,9 +5,7 @@ namespace WampSharp.V2.Rpc { -#if !PCL [Serializable] -#endif public class WampRpcRuntimeException : WampException { private const string ErrorUri = "wamp.error.runtime_error"; diff --git a/src/net45/WampSharp/WampSharp.csproj b/src/net45/WampSharp/WampSharp.csproj index 74108d84c..bc98fa1c6 100644 --- a/src/net45/WampSharp/WampSharp.csproj +++ b/src/net45/WampSharp/WampSharp.csproj @@ -136,6 +136,7 @@ + diff --git a/src/pcl/WampSharp/WampSharp.csproj b/src/pcl/WampSharp/WampSharp.csproj index 7f6997f4a..a9c48860c 100644 --- a/src/pcl/WampSharp/WampSharp.csproj +++ b/src/pcl/WampSharp/WampSharp.csproj @@ -263,6 +263,9 @@ Core\Utilities\Method.cs + + Core\Utilities\SerializableAttribute.cs + Core\Utilities\ReadOnlyDictionary.cs