Skip to content

Commit dcf3272

Browse files
Ticket #102 : WIP
1 parent 43de050 commit dcf3272

53 files changed

Lines changed: 753 additions & 319 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

FaasNet.RaftConsensus.sln

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FaasNet.RaftConsensus.Tests
1515
EndProject
1616
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FaasNet.Common", "src\Common\FaasNet.Common\FaasNet.Common.csproj", "{7FD1CA87-582E-4ABA-90EE-6DBC4AF208C9}"
1717
EndProject
18-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FaasNet.RaftConsensus.Startup", "src\RaftConsensus\FaasNet.RaftConsensus.Startup\FaasNet.RaftConsensus.Startup.csproj", "{86307474-560B-47BB-BA03-6AFB530D0135}"
19-
EndProject
2018
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02. Startup Layer", "02. Startup Layer", "{489FAF68-CABA-41BC-A650-911D3B225F1B}"
2119
EndProject
2220
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FaasNet.RaftConsensus.Logging.Startup", "src\RaftConsensus\FaasNet.RaftConsensus.Logging.Startup\FaasNet.RaftConsensus.Logging.Startup.csproj", "{49BAD3BA-5CA6-47EE-A372-EB5CA0F4510C}"
@@ -43,10 +41,6 @@ Global
4341
{7FD1CA87-582E-4ABA-90EE-6DBC4AF208C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
4442
{7FD1CA87-582E-4ABA-90EE-6DBC4AF208C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
4543
{7FD1CA87-582E-4ABA-90EE-6DBC4AF208C9}.Release|Any CPU.Build.0 = Release|Any CPU
46-
{86307474-560B-47BB-BA03-6AFB530D0135}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47-
{86307474-560B-47BB-BA03-6AFB530D0135}.Debug|Any CPU.Build.0 = Debug|Any CPU
48-
{86307474-560B-47BB-BA03-6AFB530D0135}.Release|Any CPU.ActiveCfg = Release|Any CPU
49-
{86307474-560B-47BB-BA03-6AFB530D0135}.Release|Any CPU.Build.0 = Release|Any CPU
5044
{49BAD3BA-5CA6-47EE-A372-EB5CA0F4510C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
5145
{49BAD3BA-5CA6-47EE-A372-EB5CA0F4510C}.Debug|Any CPU.Build.0 = Debug|Any CPU
5246
{49BAD3BA-5CA6-47EE-A372-EB5CA0F4510C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -60,7 +54,6 @@ Global
6054
{2B97E828-2036-4255-9679-48AD308C1328} = {5C5A8E54-DE20-4284-9FC5-F051B296A57A}
6155
{004750A0-51B3-4AF6-8526-4782D39FD4BB} = {D63393ED-CE18-4AAF-8AED-E57FBF50FD0B}
6256
{7FD1CA87-582E-4ABA-90EE-6DBC4AF208C9} = {5C5A8E54-DE20-4284-9FC5-F051B296A57A}
63-
{86307474-560B-47BB-BA03-6AFB530D0135} = {489FAF68-CABA-41BC-A650-911D3B225F1B}
6457
{49BAD3BA-5CA6-47EE-A372-EB5CA0F4510C} = {489FAF68-CABA-41BC-A650-911D3B225F1B}
6558
EndGlobalSection
6659
GlobalSection(ExtensibilityGlobals) = postSolution

src/EventMesh/FaasNet.EventMesh.Runtime/EventMeshNode.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class EventMeshNode : BaseNodeHost
1818
{
1919
private readonly IEnumerable<IMessageHandler> _messageHandlers;
2020

21-
public EventMeshNode(IEnumerable<IMessageHandler> messageHandlers, IPeerStore peerStore, IPeerHostFactory peerHostFactory, ILogger<BaseNodeHost> logger, IOptions<ConsensusPeerOptions> options) : base(peerStore, peerHostFactory, logger, options)
21+
public EventMeshNode(IEnumerable<IMessageHandler> messageHandlers, IPeerStore peerStore, RaftConsensus.Core.Stores.INodeStateStore nodeStateStore, IPeerHostFactory peerHostFactory, ILogger<BaseNodeHost> logger, IOptions<ConsensusPeerOptions> options, IEnumerable<RaftConsensus.Core.INodeStateStore> requestHandlers) : base(peerStore, peerHostFactory, logger, options, requestHandlers)
2222
{
2323
_messageHandlers = messageHandlers;
2424
}
@@ -71,5 +71,7 @@ protected override async Task HandleUDPPackage(UdpReceiveResult udpResult, Cance
7171
}
7272
}
7373
}
74+
75+
// Add state.
7476
}
7577
}

src/RaftConsensus/FaasNet.RaftConsensus.Client/ConsensusClient.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FaasNet.RaftConsensus.Client.Extensions;
22
using FaasNet.RaftConsensus.Client.Messages;
3+
using FaasNet.RaftConsensus.Client.Messages.Consensus;
34
using System;
45
using System.Linq;
56
using System.Net;
@@ -19,7 +20,7 @@ public ConsensusClient(IPEndPoint target)
1920
UdpClient = new UdpClient(new IPEndPoint(IPAddress.Any, 0));
2021
}
2122

22-
public ConsensusClient(string url, int port) : this(new IPEndPoint(ResolveIPAddress(url), port)) { }
23+
public ConsensusClient(string url, int port) : this(new IPEndPoint(IPAddressHelper.ResolveIPAddress(url), port)) { }
2324

2425
public UdpClient UdpClient { get; private set; }
2526

@@ -45,11 +46,5 @@ public void Dispose()
4546
{
4647
UdpClient?.Dispose();
4748
}
48-
49-
public static IPAddress ResolveIPAddress(string url)
50-
{
51-
var hostEntry = Dns.GetHostEntry(url);
52-
return hostEntry.AddressList.First(a => a.AddressFamily == AddressFamily.InterNetwork);
53-
}
5449
}
5550
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using FaasNet.RaftConsensus.Client.Extensions;
2+
using FaasNet.RaftConsensus.Client.Messages;
3+
using FaasNet.RaftConsensus.Client.Messages.Gossip;
4+
using System;
5+
using System.Linq;
6+
using System.Net;
7+
using System.Net.Sockets;
8+
using System.Threading;
9+
using System.Threading.Tasks;
10+
11+
namespace FaasNet.RaftConsensus.Client
12+
{
13+
public class GossipClient : IDisposable
14+
{
15+
private readonly IPEndPoint _target;
16+
17+
public GossipClient(IPEndPoint target)
18+
{
19+
_target = target;
20+
UdpClient = new UdpClient(new IPEndPoint(IPAddress.Any, 0));
21+
}
22+
23+
public GossipClient(string url, int port) : this(new IPEndPoint(IPAddressHelper.ResolveIPAddress(url), port)) { }
24+
25+
public UdpClient UdpClient { get; private set; }
26+
27+
public Task Heartbeat(string url, int port, CancellationToken cancellationToken = default(CancellationToken))
28+
{
29+
var package = GossipPackageRequestBuilder.Heartbeat(url, port);
30+
return Send(package, cancellationToken);
31+
}
32+
33+
public async Task Send(GossipPackage gossipPackage, CancellationToken cancellationToken = default(CancellationToken))
34+
{
35+
var writeCtx = new WriteBufferContext();
36+
gossipPackage.Serialize(writeCtx);
37+
var payload = writeCtx.Buffer.ToArray();
38+
await UdpClient.SendAsync(payload, payload.Count(), _target).WithCancellation(cancellationToken);
39+
}
40+
41+
public Task JoinNode(string url, int port, CancellationToken cancellationToken = default(CancellationToken))
42+
{
43+
var package = GossipPackageRequestBuilder.AddNode(url, port);
44+
return Send(package, cancellationToken);
45+
}
46+
47+
public void Dispose()
48+
{
49+
UdpClient?.Dispose();
50+
}
51+
}
52+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System.Linq;
2+
using System.Net;
3+
using System.Net.Sockets;
4+
5+
namespace FaasNet.RaftConsensus.Client
6+
{
7+
public static class IPAddressHelper
8+
{
9+
public static IPAddress ResolveIPAddress(string url)
10+
{
11+
var hostEntry = Dns.GetHostEntry(url);
12+
return hostEntry.AddressList.First(a => a.AddressFamily == AddressFamily.InterNetwork);
13+
}
14+
}
15+
}

src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/AppendEntryRequest.cs renamed to src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/Consensus/AppendEntryRequest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace FaasNet.RaftConsensus.Client.Messages
1+
namespace FaasNet.RaftConsensus.Client.Messages.Consensus
22
{
33
public class AppendEntryRequest : ConsensusPackage
44
{

src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/ConsensusCommands.cs renamed to src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/Consensus/ConsensusCommands.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace FaasNet.RaftConsensus.Client.Messages
1+
namespace FaasNet.RaftConsensus.Client.Messages.Consensus
22
{
33
public class ConsensusCommands : BaseCommands
44
{

src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/ConsensusHeader.cs renamed to src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/Consensus/ConsensusHeader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace FaasNet.RaftConsensus.Client.Messages
1+
namespace FaasNet.RaftConsensus.Client.Messages.Consensus
22
{
33
public class ConsensusHeader
44
{

src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/ConsensusPackage.cs renamed to src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/Consensus/ConsensusPackage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace FaasNet.RaftConsensus.Client.Messages
1+
namespace FaasNet.RaftConsensus.Client.Messages.Consensus
22
{
33
public class ConsensusPackage
44
{

src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/ConsensusPackageRequestBuilder.cs renamed to src/RaftConsensus/FaasNet.RaftConsensus.Client/Messages/Consensus/ConsensusPackageRequestBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace FaasNet.RaftConsensus.Client.Messages
1+
namespace FaasNet.RaftConsensus.Client.Messages.Consensus
22
{
33
public class ConsensusPackageRequestBuilder
44
{

0 commit comments

Comments
 (0)