Skip to content

Commit 3501ed9

Browse files
Ivan ShynkarenkaIvan Shynkarenka
Ivan Shynkarenka
authored and
Ivan Shynkarenka
committed
Add support of .NET namespaces via domain declaration
1 parent e9dab88 commit 3501ed9

34 files changed

+1955
-1890
lines changed

projects/CSharp/Benchmarks/SendReceive.cs

+16-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
using BenchmarkDotNet.Attributes;
22

3+
using com.chronoxor.proto;
4+
using com.chronoxor.proto.FBE;
5+
36
namespace Benchmarks
47
{
5-
public class MySender1 : FBE.proto.Sender, FBE.proto.ISenderListener
8+
public class MySender1 : Sender, ISenderListener
69
{
710
private long Size { get; set; }
811
private long LogSize { get; set; }
@@ -11,7 +14,7 @@ public class MySender1 : FBE.proto.Sender, FBE.proto.ISenderListener
1114
public void OnSendLog(string message) { LogSize += message.Length; }
1215
}
1316

14-
public class MySender2 : FBE.proto.Sender, FBE.proto.ISenderListener
17+
public class MySender2 : Sender, ISenderListener
1518
{
1619
private long Size { get; set; }
1720
private long LogSize { get; set; }
@@ -20,37 +23,37 @@ public class MySender2 : FBE.proto.Sender, FBE.proto.ISenderListener
2023
public void OnSendLog(string message) { LogSize += message.Length; }
2124
}
2225

23-
public class MyReceiver : FBE.proto.Receiver, FBE.proto.IReceiverListener
26+
public class MyReceiver : Receiver, IReceiverListener
2427
{
2528
private long LogSize { get; set; }
2629

27-
public void OnReceive(proto.OrderMessage value) {}
28-
public void OnReceive(proto.BalanceMessage value) {}
29-
public void OnReceive(proto.AccountMessage value) {}
30+
public void OnReceive(OrderMessage value) {}
31+
public void OnReceive(BalanceMessage value) {}
32+
public void OnReceive(AccountMessage value) {}
3033

3134
public void OnReceiveLog(string message) { LogSize += message.Length; }
3235
}
3336

3437
public class SendReceive
3538
{
36-
private readonly proto.AccountMessage _account;
39+
private readonly AccountMessage _account;
3740
private readonly MySender1 _sender1;
3841
private readonly MySender2 _sender2;
3942
private readonly MyReceiver _receiver;
4043

4144
public SendReceive()
4245
{
4346
// Create a new account with some orders
44-
_account = new proto.AccountMessage(proto.Account.Default);
47+
_account = new AccountMessage(Account.Default);
4548
_account.body.id = 1;
4649
_account.body.name = "Test";
47-
_account.body.state = proto.State.good;
50+
_account.body.state = State.good;
4851
_account.body.wallet.currency = "USD";
4952
_account.body.wallet.amount = 1000.0;
50-
_account.body.asset = new proto.Balance("EUR", 100.0);
51-
_account.body.orders.Add(new proto.Order(1, "EURUSD", proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0));
52-
_account.body.orders.Add(new proto.Order(2, "EURUSD", proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0));
53-
_account.body.orders.Add(new proto.Order(3, "EURUSD", proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0));
53+
_account.body.asset = new Balance("EUR", 100.0);
54+
_account.body.orders.Add(new Order(1, "EURUSD", OrderSide.buy, OrderType.market, 1.23456, 1000.0));
55+
_account.body.orders.Add(new Order(2, "EURUSD", OrderSide.sell, OrderType.limit, 1.0, 100.0));
56+
_account.body.orders.Add(new Order(3, "EURUSD", OrderSide.buy, OrderType.stop, 1.5, 10.0));
5457

5558
_sender1 = new MySender1();
5659
_sender1.Send(_account);

projects/CSharp/Benchmarks/Serialization.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
11
using System.Diagnostics;
22
using BenchmarkDotNet.Attributes;
33

4+
using com.chronoxor.proto;
5+
using com.chronoxor.proto.FBE;
6+
47
namespace Benchmarks
58
{
69
public class Serialization
710
{
8-
private proto.Account _account;
9-
private readonly FBE.proto.AccountModel _writer;
10-
private readonly FBE.proto.AccountModel _reader;
11+
private Account _account;
12+
private readonly AccountModel _writer;
13+
private readonly AccountModel _reader;
1114

1215
public Serialization()
1316
{
1417
// Create a new account with some orders
15-
_account = proto.Account.Default;
18+
_account = Account.Default;
1619
_account.id = 1;
1720
_account.name = "Test";
18-
_account.state = proto.State.good;
21+
_account.state = State.good;
1922
_account.wallet.currency = "USD";
2023
_account.wallet.amount = 1000.0;
21-
_account.asset = new proto.Balance("EUR", 100.0);
22-
_account.orders.Add(new proto.Order(1, "EURUSD", proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0));
23-
_account.orders.Add(new proto.Order(2, "EURUSD", proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0));
24-
_account.orders.Add(new proto.Order(3, "EURUSD", proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0));
24+
_account.asset = new Balance("EUR", 100.0);
25+
_account.orders.Add(new Order(1, "EURUSD", OrderSide.buy, OrderType.market, 1.23456, 1000.0));
26+
_account.orders.Add(new Order(2, "EURUSD", OrderSide.sell, OrderType.limit, 1.0, 100.0));
27+
_account.orders.Add(new Order(3, "EURUSD", OrderSide.buy, OrderType.stop, 1.5, 10.0));
2528

2629
// Serialize the account to the FBE stream
27-
_writer = new FBE.proto.AccountModel();
30+
_writer = new AccountModel();
2831
_writer.Serialize(_account);
2932
Debug.Assert(_writer.Verify());
3033

3134
// Deserialize the account from the FBE stream
32-
_reader = new FBE.proto.AccountModel();
35+
_reader = new AccountModel();
3336
_reader.Attach(_writer.Buffer);
3437
Debug.Assert(_reader.Verify());
3538
_reader.Deserialize(out _account);

projects/CSharp/Benchmarks/SerializationFinal.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
11
using System.Diagnostics;
22
using BenchmarkDotNet.Attributes;
33

4+
using com.chronoxor.proto;
5+
using com.chronoxor.proto.FBE;
6+
47
namespace Benchmarks
58
{
69
public class SerializationFinal
710
{
8-
private proto.Account _account;
9-
private readonly FBE.proto.AccountFinalModel _writer;
10-
private readonly FBE.proto.AccountFinalModel _reader;
11+
private Account _account;
12+
private readonly AccountFinalModel _writer;
13+
private readonly AccountFinalModel _reader;
1114

1215
public SerializationFinal()
1316
{
1417
// Create a new account with some orders
15-
_account = proto.Account.Default;
18+
_account = Account.Default;
1619
_account.id = 1;
1720
_account.name = "Test";
18-
_account.state = proto.State.good;
21+
_account.state = State.good;
1922
_account.wallet.currency = "USD";
2023
_account.wallet.amount = 1000.0;
21-
_account.asset = new proto.Balance("EUR", 100.0);
22-
_account.orders.Add(new proto.Order(1, "EURUSD", proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0));
23-
_account.orders.Add(new proto.Order(2, "EURUSD", proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0));
24-
_account.orders.Add(new proto.Order(3, "EURUSD", proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0));
24+
_account.asset = new Balance("EUR", 100.0);
25+
_account.orders.Add(new Order(1, "EURUSD", OrderSide.buy, OrderType.market, 1.23456, 1000.0));
26+
_account.orders.Add(new Order(2, "EURUSD", OrderSide.sell, OrderType.limit, 1.0, 100.0));
27+
_account.orders.Add(new Order(3, "EURUSD", OrderSide.buy, OrderType.stop, 1.5, 10.0));
2528

2629
// Serialize the account to the FBE stream
27-
_writer = new FBE.proto.AccountFinalModel();
30+
_writer = new AccountFinalModel();
2831
_writer.Serialize(_account);
2932
Debug.Assert(_writer.Verify());
3033

3134
// Deserialize the account from the FBE stream
32-
_reader = new FBE.proto.AccountFinalModel();
35+
_reader = new AccountFinalModel();
3336
_reader.Attach(_writer.Buffer);
3437
Debug.Assert(_reader.Verify());
3538
_reader.Deserialize(out _account);
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,33 @@
11
using BenchmarkDotNet.Attributes;
22

3+
using com.chronoxor.proto;
4+
35
namespace Benchmarks
46
{
57
public class SerializationJson
68
{
7-
private proto.Account _account;
9+
private Account _account;
810
private string _json;
911

1012
public SerializationJson()
1113
{
1214
// Create a new account with some orders
13-
_account = proto.Account.Default;
15+
_account = Account.Default;
1416
_account.id = 1;
1517
_account.name = "Test";
16-
_account.state = proto.State.good;
18+
_account.state = State.good;
1719
_account.wallet.currency = "USD";
1820
_account.wallet.amount = 1000.0;
19-
_account.asset = new proto.Balance("EUR", 100.0);
20-
_account.orders.Add(new proto.Order(1, "EURUSD", proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0));
21-
_account.orders.Add(new proto.Order(2, "EURUSD", proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0));
22-
_account.orders.Add(new proto.Order(3, "EURUSD", proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0));
21+
_account.asset = new Balance("EUR", 100.0);
22+
_account.orders.Add(new Order(1, "EURUSD", OrderSide.buy, OrderType.market, 1.23456, 1000.0));
23+
_account.orders.Add(new Order(2, "EURUSD", OrderSide.sell, OrderType.limit, 1.0, 100.0));
24+
_account.orders.Add(new Order(3, "EURUSD", OrderSide.buy, OrderType.stop, 1.5, 10.0));
2325

2426
// Serialize the account to the JSON string
2527
_json = _account.ToJson();
2628

2729
// Deserialize the account from the JSON string
28-
_account = proto.Account.FromJson(_json);
30+
_account = Account.FromJson(_json);
2931
}
3032

3133
[Benchmark]
@@ -39,7 +41,7 @@ public void Serialize()
3941
public void Deserialize()
4042
{
4143
// Deserialize the account from the JSON string
42-
_account = proto.Account.FromJson(_json);
44+
_account = Account.FromJson(_json);
4345
}
4446
}
4547
}

projects/CSharp/Examples/Create/Program.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
using System;
22
using System.Diagnostics;
33

4+
using com.chronoxor.proto;
5+
using com.chronoxor.proto.FBE;
6+
47
namespace Create
58
{
69
public static class Program
710
{
811
public static void Main()
912
{
1013
// Create a new account using FBE model
11-
var account = new FBE.proto.AccountModel();
14+
var account = new AccountModel();
1215
long modelBegin = account.CreateBegin();
1316
long accountBegin = account.model.SetBegin();
1417
account.model.id.Set(1);
1518
account.model.name.Set("Test");
16-
account.model.state.Set(proto.State.good);
19+
account.model.state.Set(State.good);
1720
long walletBegin = account.model.wallet.SetBegin();
1821
account.model.wallet.currency.Set("USD");
1922
account.model.wallet.amount.Set(1000.0);
@@ -26,7 +29,7 @@ public static void Main()
2629
Console.WriteLine($"FBE size: {account.Buffer.Size}");
2730

2831
// Access the account using the FBE model
29-
var access = new FBE.proto.AccountModel();
32+
var access = new AccountModel();
3033
access.Attach(account.Buffer);
3134
Debug.Assert(access.Verify());
3235

0 commit comments

Comments
 (0)