void DisplayPeer(Color color, IVisiblePeer peer, double radius, string text = null) { var p = GetPosition(peer); var ellipse = new Ellipse { Width = radius * 2, Height = radius * 2, Fill = new SolidColorBrush(color) }; Canvas.SetTop(ellipse, p.Y - radius); Canvas.SetLeft(ellipse, p.X - radius); canvas.Children.Add(ellipse); if (text != null) { var textBlock = new TextBlock { Text = text, Foreground = new SolidColorBrush(Colors.Black), FontWeight = FontWeights.Bold, FontSize = 12 }; Canvas.SetLeft(textBlock, p.X); Canvas.SetTop(textBlock, p.Y); canvas.Children.Add(textBlock); } }
internal void WriteToLog_needsAttention_EmitListOfPeers(string message, IVisiblePeer selectedPeer = null) { if (_visionChannel?.GetAttentionTo(_visionChannelSourceId, ModuleName) <= AttentionLevel.needsAttention) { _visionChannel.EmitListOfPeers(_visionChannelSourceId, ModuleName, AttentionLevel.needsAttention, message, null, selectedPeer); } }
Point GetPosition(IVisiblePeer peer) { var v = peer.VectorValues; var x = v[0]; var y = v[1]; return(new Point(margin + x * (canvas.ActualWidth - margin * 2), margin + y * (canvas.ActualHeight - margin * 2))); }
public Logger(DrpPeerEngine engine, IVisiblePeer localPeer, object req, string moduleName) { Engine = engine; _visionChannel = engine.Configuration.VisionChannel; _visionChannelSourceId = engine.Configuration.VisionChannelSourceId; _localPeer = localPeer; _req = req; ModuleName = moduleName; }
void DisplayConnection(Color color, IVisiblePeer peer1, IVisiblePeer peer2, double thickness) { GetPosition(peer1, peer2, out var p1, out var p2); var line = new Line { Stroke = new SolidColorBrush(color), X1 = p1.X, X2 = p2.X, Y1 = p1.Y, Y2 = p2.Y, StrokeThickness = thickness }; canvas.Children.Add(line); }
void GetPosition(IVisiblePeer peer1, IVisiblePeer peer2, out Point p1, out Point p2) { var v1 = peer1.VectorValues; var x1 = v1[0]; var y1 = v1[1]; var v2 = peer2.VectorValues; var x2 = v2[0]; var y2 = v2[1]; RegistrationIdDistance.ProcessVectorInLoopedRegistrationIdSpace(x1, ref x2); RegistrationIdDistance.ProcessVectorInLoopedRegistrationIdSpace(y1, ref y2); p1 = new Point(margin + x1 * (canvas.ActualWidth - margin * 2), margin + y1 * (canvas.ActualHeight - margin * 2)); p2 = new Point(margin + x2 * (canvas.ActualWidth - margin * 2), margin + y2 * (canvas.ActualHeight - margin * 2)); }
public static IVisiblePeer Clone(IVisiblePeer sourcePeer) { var r = new ClonedVisiblePeer { VectorValues = sourcePeer.VectorValues.ToArray(), Highlighted = sourcePeer.Highlighted, Name = sourcePeer.Name }; r.NeighborPeers = new List <IVisiblePeer>(); foreach (var neighbor in sourcePeer.NeighborPeers) { r.NeighborPeers.Add(new ClonedVisiblePeer { VectorValues = neighbor.VectorValues.ToArray() }); } return(r); }
string IVisiblePeer.GetDistanceString(IVisiblePeer toThisPeer) => this.RegistrationId.GetDistanceTo(_tc.CryptoLibrary, ((Peer)toThisPeer).RegistrationId, _tc.NumberOfDimensions).ToString();
internal void WriteToLog_reg_requesterSide_lightPain(string message, object req, IVisiblePeer localPeer) { if (Configuration.VisionChannel?.GetAttentionTo(Configuration.VisionChannelSourceId, VisionChannelModuleName_reg_requesterSide) <= AttentionLevel.lightPain) { Configuration.VisionChannel?.EmitPeerInRoutedPath(Configuration.VisionChannelSourceId, VisionChannelModuleName_reg_requesterSide, AttentionLevel.lightPain, message, req, localPeer); } }
string IVisiblePeer.GetDistanceString(IVisiblePeer toThisPeer) { return(""); }
public static List <IVisiblePeer> Clone(List <IVisiblePeer> sourceList, IVisiblePeer forceHighlightedPeer = null) { var r = new List <ClonedVisiblePeer>(sourceList.Count); var sourcePeersIndexes = new Dictionary <IVisiblePeer, int>(); for (int i = 0; i < sourceList.Count; i++) { var sourcePeer = sourceList[i]; sourcePeersIndexes.Add(sourcePeer, i); r.Add(new ClonedVisiblePeer { VectorValues = sourcePeer.VectorValues.ToArray(), Highlighted = sourcePeer.Highlighted || sourcePeer == forceHighlightedPeer, Name = sourcePeer.Name }); } for (int i = 0; i < sourceList.Count; i++) { var sourcePeer = sourceList[i]; var clonedPeer = r[i]; clonedPeer.NeighborPeers = new List <IVisiblePeer>(); List <IVisiblePeer> sourcePeerNeighborPeers; int c = 0; _retry: try { sourcePeerNeighborPeers = sourcePeer.NeighborPeers?.ToList(); } catch (InvalidOperationException) { // collection was modifid. retry 10 times if (c++ < 10) { goto _retry; } else { throw; } } if (sourcePeerNeighborPeers != null) { foreach (var neighbor in sourcePeerNeighborPeers) { if (sourcePeersIndexes.TryGetValue(neighbor, out var neighborIndex)) { clonedPeer.NeighborPeers.Add(r[neighborIndex]); } else { clonedPeer.NeighborPeers.Add(new ClonedVisiblePeer { VectorValues = neighbor.VectorValues.ToArray() }); } } } } return(r.Cast <IVisiblePeer>().ToList()); }
public override void EmitPeerInRoutedPath(string visionChannelSourceId, string moduleName, AttentionLevel level, string message, object req, IVisiblePeer localPeer) { if (!EnableNewLogMessages) { return; } var msg = new LogMessage(this) { AttentionLevel = level, ManagedThreadId = Thread.CurrentThread.ManagedThreadId, Time = TimeNow, SourceId = visionChannelSourceId, ModuleName = moduleName, Message = message, }; if (AttentionToRoutedPath && req != null) { try { msg.RoutedPathPeer = ClonedVisiblePeer.Clone(localPeer); } catch // intentionally ignore { } msg.RoutedPathReq = req; } lock (_logMessagesNewestFirst) { _logMessagesNewestFirst.AddFirst(msg); CleanMemoryIfNeeded(msg.Time); } if (_maxEmittedAttentionLevelLogMessage == null || msg.AttentionLevel >= _maxEmittedAttentionLevelLogMessage.AttentionLevel) { _maxEmittedAttentionLevelLogMessage = msg; } }
public event Action <LogMessage> SevereMessageEmitted; // is used to pass errors to android adb log public override void EmitListOfPeers(string sourceId, string moduleName, AttentionLevel level, string message, List <IVisiblePeer> peersList_RoutingPath, IVisiblePeer selectedPeer) { if (!EnableNewLogMessages) { return; } var msg = new LogMessage(this) { AttentionLevel = level, ManagedThreadId = Thread.CurrentThread.ManagedThreadId, Time = TimeNow, SourceId = sourceId, ModuleName = moduleName, Message = message, PeersListDisplayMode = peersList_RoutingPath != null ? VisiblePeersDisplayMode.routingPath : VisiblePeersDisplayMode.allPeers, }; if (VisiblePeersDelegate != null) { try { msg.PeersList = peersList_RoutingPath ?? ClonedVisiblePeer.Clone(VisiblePeersDelegate(), selectedPeer); } catch // intentionally ignore { } } lock (_logMessagesNewestFirst) { _logMessagesNewestFirst.AddFirst(msg); CleanMemoryIfNeeded(msg.Time); } if (_maxEmittedAttentionLevelLogMessage == null || msg.AttentionLevel >= _maxEmittedAttentionLevelLogMessage.AttentionLevel) { _maxEmittedAttentionLevelLogMessage = msg; } }
string IVisiblePeer.GetDistanceString(IVisiblePeer toThisPeer) { throw new NotImplementedException(); }