Skip to content

Commit f251f93

Browse files
Release 1.0.0 (#15)
* Update to .NET Standard 2.0 * updated to the latest MsgPack * update Readme * fixci
1 parent e272720 commit f251f93

File tree

11 files changed

+65
-178
lines changed

11 files changed

+65
-178
lines changed
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net461;netcoreapp1.1</TargetFrameworks>
4+
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
55
</PropertyGroup>
66

77
<ItemGroup>
@@ -10,16 +10,12 @@
1010
</ItemGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
14-
<PackageReference Include="xunit" Version="2.3.0-beta2-*" />
15-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta2-*" />
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
14+
<PackageReference Include="xunit" Version="2.3.0-beta4-*" />
15+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta4-*" />
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta2-*" />
19+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta4-*" />
2020
</ItemGroup>
21-
22-
<PropertyGroup Condition=" '$(TargetFramework)' == 'net461' ">
23-
<DefineConstants>$(DefineConstants);SERIALIZABLE</DefineConstants>
24-
</PropertyGroup>
2521
</Project>

Akka.Serialization.MessagePack.Tests/MsgPackVersionToleranceTests.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,30 @@ public MsgPackVersionToleranceTests() : base(ConfigFactory.GetConfig(typeof(MsgP
2020
{
2121
}
2222

23-
[Fact(Skip = "Not implemented yet")]
24-
public void Can_serialize_typeless_message_from_NET_on_NETCORE_and_vise_versa()
23+
[Fact]
24+
public void Can_deserialize_Uri_message_which_was_serialized_on_full_NET()
2525
{
26-
#if NETCOREAPP1_1
26+
// TypelessClass with System.URI serialized on .NET
2727
var serializedString = "gaZOZXN0ZWTJAAAAbWTZVVN5c3RlbS5VcmksIFN5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODm1aHR0cDovL21pY3Jvc29mdC5jb20v";
28-
#else
29-
var serializedString = "gaZOZXN0ZWTJAAAANWS+U3lzdGVtLlVyaSwgU3lzdGVtLlByaXZhdGUuVXJptWh0dHA6Ly9taWNyb3NvZnQuY29tLw==";
30-
#endif
31-
var simpleString = Encoding.UTF8.GetString(Convert.FromBase64String(serializedString));
3228

3329
var deserialized = MessagePackSerializer.Deserialize<TypelessClass>(
3430
Convert.FromBase64String(serializedString),
3531
TypelessContractlessStandardResolver.Instance);
3632
Assert.Equal(new Uri("http://microsoft.com"), deserialized.Nested);
3733
}
3834

35+
[Fact]
36+
public void Can_deserialize_TimeSpan_message_which_was_serialized_on_full_NET()
37+
{
38+
// TypelessClass with System.TimeSpan serialized on .NET
39+
var serializedString = "gaZOZXN0ZWTJAAAAH2S5U3lzdGVtLlRpbWVTcGFuLCBtc2NvcmxpYs6y0F4A";
40+
41+
var deserialized = MessagePackSerializer.Deserialize<TypelessClass>(
42+
Convert.FromBase64String(serializedString),
43+
TypelessContractlessStandardResolver.Instance);
44+
Assert.Equal(TimeSpan.FromMinutes(5), deserialized.Nested);
45+
}
46+
3947
[Fact]
4048
public void Can_ignore_unexpected_data()
4149
{

Akka.Serialization.MessagePack/Akka.Serialization.MessagePack.csproj

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<Copyright>Copyright © 2017</Copyright>
66
<Authors>Akka.NET Contrib</Authors>
77
<Description>MessagePack serializer for Akka.NET</Description>
8-
<VersionPrefix>0.9.0</VersionPrefix>
9-
<TargetFrameworks>net461;netstandard1.6</TargetFrameworks>
8+
<VersionPrefix>1.0.0</VersionPrefix>
9+
<TargetFrameworks>netstandard2.0</TargetFrameworks>
1010
<PackageTags>akka;actors;actor model;Akka;concurrency;messagepack;serializer;serialization</PackageTags>
1111
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1212
<PackageIconUrl>http://getakka.net/images/akkalogo.png</PackageIconUrl>
@@ -17,11 +17,7 @@
1717

1818
<ItemGroup>
1919
<PackageReference Include="Akka" Version="1.3.0" />
20-
<PackageReference Include="MessagePack" Version="1.4.4" />
21-
<PackageReference Include="MessagePack.ImmutableCollection" Version="1.4.4" />
20+
<PackageReference Include="MessagePack" Version="1.6.0.3" />
21+
<PackageReference Include="MessagePack.ImmutableCollection" Version="1.6.0.3" />
2222
</ItemGroup>
23-
24-
<PropertyGroup Condition=" '$(TargetFramework)' == 'net461' ">
25-
<DefineConstants>$(DefineConstants);SERIALIZABLE</DefineConstants>
26-
</PropertyGroup>
2723
</Project>

Akka.Serialization.MessagePack/MsgPackSerializer.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ public sealed class MsgPackSerializer : Serializer
2323
static MsgPackSerializer()
2424
{
2525
CompositeResolver.RegisterAndSetAsDefault(
26-
#if SERIALIZABLE
27-
Akka.Serialization.MessagePack.Resolvers.SerializableResolver.Instance,
28-
#endif
26+
SerializableResolver.Instance,
2927
AkkaResolver.Instance,
3028
ImmutableCollectionResolver.Instance,
3129
TypelessContractlessStandardResolver.Instance);
@@ -70,7 +68,7 @@ public override object FromBinary(byte[] bytes, Type type)
7068
}
7169
}
7270

73-
public override int Identifier => 41;
71+
public override int Identifier => 150;
7472

7573
public override bool IncludeManifest => false;
7674
}

Akka.Serialization.MessagePack/Resolvers/ExceptionFallbackResolver.cs

Lines changed: 0 additions & 131 deletions
This file was deleted.

Akka.Serialization.MessagePack/Resolvers/SerializableResolver.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
// </copyright>
55
//-----------------------------------------------------------------------
66

7-
#if SERIALIZABLE
87
using System;
98
using System.Reflection;
109
using System.Runtime.Serialization;
@@ -104,5 +103,4 @@ public T Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResol
104103
return (T)obj;
105104
}
106105
}
107-
}
108-
#endif
106+
}
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net461;netstandard1.6</TargetFrameworks>
4+
<TargetFrameworks>netstandard2.0</TargetFrameworks>
55
</PropertyGroup>
66

77
<ItemGroup>
88
<PackageReference Include="Akka.TestKit" Version="1.3.0" />
9-
<PackageReference Include="Akka.TestKit.Xunit2" Version="1.3.0-beta" />
10-
<PackageReference Include="FluentAssertions" Version="4.19.2" />
11-
<PackageReference Include="System.ValueTuple" Version="4.3.0" />
9+
<PackageReference Include="Akka.TestKit.Xunit2" Version="1.3.0" />
10+
<PackageReference Include="FluentAssertions" Version="4.19.4" />
11+
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
1212
</ItemGroup>
1313

14-
<PropertyGroup Condition=" '$(TargetFramework)' == 'net461' ">
15-
<DefineConstants>$(DefineConstants);SERIALIZABLE</DefineConstants>
16-
</PropertyGroup>
17-
1814
</Project>

Akka.Serialization.Testkit/ExceptionsTests.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
// </copyright>
55
//-----------------------------------------------------------------------
66

7-
#if SERIALIZABLE
8-
97
using FluentAssertions;
108
using System;
119
using System.Runtime.Serialization;
@@ -155,5 +153,4 @@ public override void GetObjectData(SerializationInfo info, StreamingContext cont
155153
}
156154
}
157155
}
158-
}
159-
#endif
156+
}

Akka.Serialization.Testkit/PolymorphismTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ public virtual void Can_Serialize_MessageWithObjectPropertyPrimitive()
2828
AssertEqual(actual);
2929
}
3030

31+
[Fact]
32+
public virtual void Can_Serialize_MessageWithObjectPropertyPrimitive_do_not_downcast_to_byte()
33+
{
34+
var actual = new PolymorphismMessages.ImmutableMessageWithObjectTypes
35+
{
36+
Name = "John",
37+
Data = 125
38+
};
39+
AssertEqual(actual);
40+
}
41+
3142
[Fact]
3243
public virtual void Can_Serialize_MessageWithObjectPropertyComplex()
3344
{

README.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@ Akka.Serialization.MessagePack
44

55
Akka.NET serialization with [MessagePack](https://github.com/neuecc/MessagePack-CSharp)
66

7+
## Supported platforms
8+
- .NET Core 2.0 (via .NET Standard 2.0)
9+
- .NET Framework 4.6 and higher (via .NET Standard 2.0)
10+
711
## It supports
812
- Primitive types (`int`, `string`, `long`, etc)
913
- Build-in types (`DateTime`, `DateTimeOffset`, `TimeSpan`, `Guid`, `Uri`, `Enum`, etc)
1014
- Collections (`List<T>`, `HashSet<T>`, `Dictionary<TKey, TValue>`, etc)
1115
- Immutable Collections
12-
- Exceptions (only on full .NET Framework)
16+
- Exceptions
1317
- Akka.NET specific types (`ActorPath` and `ActorRef`)
1418
- Object types (polymorphic serialization)
1519
- Generic types
@@ -21,7 +25,21 @@ Akka.NET serialization with [MessagePack](https://github.com/neuecc/MessagePack-
2125
- F# types (`Set`, `Map`, `List`, `FSharpAsync<T>`, discriminated unions)
2226
- Handling circular references
2327
- Preserve object references
24-
- Exceptions (on NetCore)
28+
29+
## How to setup MessagePack as default serializer
30+
Bind MessagePack serializer using following HOCON configuration in your actor system settings:
31+
```json
32+
akka {
33+
actor {
34+
serializers {
35+
messagepack = "Akka.Serialization.MessagePack.MsgPackSerializer, Akka.Serialization.MessagePack"
36+
}
37+
serialization-bindings {
38+
"System.Object" = messagepack
39+
}
40+
}
41+
}
42+
```
2543

2644
## Maintainer
2745
- [alexvaluyskiy](https://github.com/alexvaluyskiy)

0 commit comments

Comments
 (0)