public Program(string name, ushort port, X509Certificate2 certificate) { _dlcs = new DataLinkCollectionStore(port); _dlf = new DataLinkFactory(_dlcs, this, port, certificate); _dlcs.Add(nameof(Program), this, name); _dlc = _dlcs.Get(nameof(Program)); _dlc.Subscribe(BroadcastChannel, OnBroadcast); _dlc.Subscribe(P2PChannel, OnP2P); _dlc.Subscribe(PerfChannel, OnPerf); _ = StartAutoSync(); }
public static void Subscribe(this DataLinkCollection dlc, string channel, Action <DataLink, string, Memory <byte> > action) => dlc.Subscribe( channel, (d, s, m) => { action(d, s, m); return(new ValueTask <bool>(true)); });
public static void Subscribe(this DataLinkCollection dlc, string channel, Func <DataLink, string, Memory <byte>, ValueTask> action) => dlc.Subscribe( channel, async(d, s, m) => { await action(d, s, m); return(true); });
private void JoinGroup(string line) { var groupName = line.Substring(2).Trim(); if (groupName.Length == 0 || groupName.Length > 1024 || !NameRegex.IsMatch(groupName)) { Console.WriteLine("Bad command."); return; } _dlc.Subscribe(groupName, OnGroupMessage); }
public static void Subscribe(this DataLinkCollection dlc, string channel, Func <DataLink, string, Memory <byte>, bool> action) => dlc.Subscribe( channel, (d, s, m) => new ValueTask <bool>(action(d, s, m)));