public void SendTo(NodeRaftAddress nodeAddress, eRaftSignalType signalType, IEncoder data, NodeRaftAddress senderNodeAddress, string entityName) { try { TcpPeer peer = null; if (Peers.TryGetValue(nodeAddress.EndPointSID, out peer)) { peer.Send(RaftCommand.RaftMessage, new TcpMsgRaft() { EntityName = entityName, RaftSignalType = signalType, Data = data.BiserEncode() }); } } catch (Exception ex) { } }
public void SendTo(NodeAddress nodeAddress, eRaftSignalType signalType, byte[] data, NodeAddress senderNodeAddress, string entityName) { try { TcpPeer peer = null; if (Peers.TryGetValue(nodeAddress.EndPointSID, out peer)) { peer.Write(cSprot1Parser.GetSprot1Codec(new byte[] { 00, 02 }, ( new TcpMsgRaft() { EntityName = entityName, RaftSignalType = signalType, Data = data } ).SerializeBiser())); } } catch (Exception ex) { } }
public void AddPeerToClusterEndPoints(TcpPeer peer, bool handshake) { _sync.EnterWriteLock(); try { //Choosing priority connection if (!Peers.ContainsKey(peer.EndPointSID)) { Peers[peer.EndPointSID] = peer; peer.FillNodeAddress(); if (handshake) { peer.Send(RaftCommand.HandshakeACK, new TcpMsgHandshake() { NodeListeningPort = trn.port, NodeUID = trn.GetNode().NodeAddress.NodeUId, }); } } else { //Peers[peer.EndPointSID].Send(RaftCommand.Ping,"ping"); //ping //removing incoming connection peer.Dispose(true); return; } } catch (Exception ex) { //throw; } finally { _sync.ExitWriteLock(); } }
public void AddTcpClient(TcpClient peer) { var p = new TcpPeer(peer, trn); }
public void AddPeerToClusterEndPoints(TcpPeer peer, bool handshake) { _sync.EnterWriteLock(); try { if (peer.Handshake.NodeUID == trn.GetNodeByEntityName("default").NodeAddress.NodeUId) //Self disconnect { trn.NodeSettings.TcpClusterEndPoints.Where(r => r.EndPointSID == peer.EndPointSID) .FirstOrDefault().Me = true; peer.Dispose(true); return; } //Choosing priority connection if (!Peers.ContainsKey(peer.EndPointSID)) { if (handshake && trn.GetNodeByEntityName("default").NodeAddress.NodeUId > peer.Handshake.NodeUID) { //trn.log.Log(new WarningLogEntry() //{ // LogType = WarningLogEntry.eLogType.DEBUG, // Description = $"{trn.port}> !!!!!dropped{peer.Handshake.NodeListeningPort} {peer.Handshake.NodeListeningPort} on handshake as weak" //}); peer.Dispose(true); return; } Peers[peer.EndPointSID] = peer; peer.FillNodeAddress(); //trn.log.Log(new WarningLogEntry() //{ // LogType = WarningLogEntry.eLogType.DEBUG, // Description = $"{trn.port}> >>>>>>connected{peer.Handshake.NodeListeningPort} {peer.Handshake.NodeListeningPort} by {(handshake ? "handshake" : "ACK")} with diff: {(trn.rn.NodeAddress.NodeUId - peer.Handshake.NodeUID)}" //}); if (handshake) { //sending back handshake ack peer.Write( cSprot1Parser.GetSprot1Codec( new byte[] { 00, 03 }, (new TcpMsgHandshake() { NodeListeningPort = trn.port, NodeUID = trn.GetNodeByEntityName("default").NodeAddress.NodeUId, }).SerializeBiser()) ); } } else { //trn.log.Log(new WarningLogEntry() //{ // LogType = WarningLogEntry.eLogType.DEBUG, // Description = $"{trn.port}> !!!!!dropped{peer.Handshake.NodeListeningPort} {peer.Handshake.NodeListeningPort} as existing" //}); //Sending ping on existing connection (may be it is alredy old) Peers[peer.EndPointSID].Write(cSprot1Parser.GetSprot1Codec(new byte[] { 00, 05 }, null)); //ping //removing incoming connection peer.Dispose(true); return; } } catch (Exception ex) { //throw; } finally { _sync.ExitWriteLock(); } }
public TcpPeer AddTcpClient(IChannelHandlerContext peer) { var p = new TcpPeer(peer, trn); return(p); }