// Process incoming command instance internal static void Invoke(LevinProtocol Context, LevinPeer Peer, Command Command) { // Command is a request if (!Command.IsResponse) { // TODO: Do something } // Command is a response else { // TODO: Do something } }
// Process incoming command instance internal static void Invoke(LevinProtocol Context, LevinPeer Peer, Command Command) { // Command is a request if (!Command.IsResponse) { // Deserialize request Request Request = Request.Deserialize(Command.Data); // debug Context.Logger?.Log(Level.DEBUG, "[IN] Received \"Request TX Pool\" Request:"); Context.Logger?.Log(Level.DEBUG, "- Response Requested: {0}", !Command.IsNotification); Context.Logger?.Log(Level.DEBUG, "- TXs:"); for (int i = 0; i < Request.Txs.Length; i++) { Context.Logger?.Log(Level.DEBUG, " - [{0}]: {1}", i, Request.Txs[i]); } // TODO: Do something with request data } }
// Process incoming command instance public static void Invoke(LevinProtocol Context, LevinPeer Peer, Command Command) { // Command is a request if (!Command.IsResponse) { // Deserialize request Request Request = Request.Deserialize(Command.Data); // debug ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "[IN] Received \"Notify Request Chain\" Request:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Response Requested: " + !Command.IsNotification, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- TXs:", LogLevel.DEBUG); for (int i = 0; i < Request.BlockIds.Length; i++) { ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - [" + i + "]: " + Request.BlockIds[i], LogLevel.DEBUG); } // TODO: Do something with request data } }
// Process incoming command instance public static void Invoke(LevinProtocol Context, LevinPeer Peer, Command Command) { // Command is a request if (!Command.IsResponse) { // Deserialize request Request Request = Request.Deserialize(Command.Data); // debug Context.Logger?.Log(Level.DEBUG, "[IN] Received \"Timed Sync\" Request:"); Context.Logger?.Log(Level.DEBUG, "- Response Requested: {0}", !Command.IsNotification); Context.Logger?.Log(Level.DEBUG, "- Core Sync Data:"); Context.Logger?.Log(Level.DEBUG, " - Current Height: {0}", Request.PayloadData.CurrentHeight); Context.Logger?.Log(Level.DEBUG, " - Top ID: {0}", Encoding.StringToHexString(Request.PayloadData.TopId)); // TODO: Do something with request data // TODO: Do some processing in here, make sure the packet isn't a notification for some reason, // make sure peer isn't duplicate, etc. // Create a response Response Response = new Response { LocalTime = GeneralUtilities.GetTimestamp(), PayloadData = new CoreSyncData { CurrentHeight = Globals.DAEMON_BLOCK_HEIGHT, TopId = Globals.DAEMON_TOP_ID }, LocalPeerlist = Globals.DAEMON_PEERLIST }; // debug Context.Logger?.Log(Level.DEBUG, "[OUT] Sending \"Timed Sync\" Response:"); Context.Logger?.Log(Level.DEBUG, "- Local Time: {0}", Response.LocalTime); Context.Logger?.Log(Level.DEBUG, "- Core Sync Data:"); Context.Logger?.Log(Level.DEBUG, " - Current Height: {0}", Response.PayloadData.CurrentHeight); Context.Logger?.Log(Level.DEBUG, " - Top ID: {0}", Encoding.StringToHexString(Response.PayloadData.TopId)); Context.Logger?.Log(Level.DEBUG, "- Local Peerlist:"); Context.Logger?.Log(Level.DEBUG, " - Entries: {0}", Response.LocalPeerlist.Length); // Reply with response Context.Reply(Peer, Id, Response.Serialize(), true); } // Command is a response else { // Deserialize response Response Response = Response.Deserialize(Command.Data); // debug Context.Logger?.Log(Level.DEBUG, "[IN] Received \"Timed Sync\" Response:"); Context.Logger?.Log(Level.DEBUG, "- Response Requested: {0}", !Command.IsNotification); Context.Logger?.Log(Level.DEBUG, "- Local Time: {0}", Response.LocalTime); Context.Logger?.Log(Level.DEBUG, "- Core Sync Data:"); Context.Logger?.Log(Level.DEBUG, " - Current Height: {0}", Response.PayloadData.CurrentHeight); Context.Logger?.Log(Level.DEBUG, " - Top ID: {0}", Encoding.StringToHexString(Response.PayloadData.TopId)); Context.Logger?.Log(Level.DEBUG, "- Local Peerlist:"); Context.Logger?.Log(Level.DEBUG, " - Entries: {0}", Response.LocalPeerlist.Length); // TODO: Do something with response data } }
// Process incoming command instance public static void Invoke(LevinProtocol Context, LevinPeer Peer, Command Command) { // Debug Peer.State = PeerState.Verified; // Command is a request if (!Command.IsResponse) { // Deserialize request Request Request = Request.Deserialize(Command.Data); // debug ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "[IN] Received \"Handshake\" Request:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Response Requested: " + !Command.IsNotification, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Node Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Network ID: " + Encoding.StringToHexString(Request.NodeData.NetworkId), LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Peer ID: " + Request.NodeData.PeerId, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Version: " + Request.NodeData.Version, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Local Time: " + Request.NodeData.LocalTime, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Port: " + Request.NodeData.Port, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Core Sync Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Current Height: " + Request.PayloadData.CurrentHeight, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Top ID: " + Encoding.StringToHexString(Request.PayloadData.TopId), LogLevel.DEBUG); // TODO: Do something with request data // TODO: Do some processing in here, make sure the packet isn't a notification for some reason, // make sure peer isn't duplicate, etc. // Create a response Response Response = new Response { NodeData = new NodeData { NetworkId = GlobalsConfig.NETWORK_ID, LocalTime = GeneralUtilities.GetTimestamp(), Port = (uint)Context.Server.Port, PeerId = Context.Server.PeerId, Version = GlobalsConfig.LEVIN_VERSION }, PayloadData = new CoreSyncData { CurrentHeight = Globals.DAEMON_BLOCK_HEIGHT, TopId = Globals.DAEMON_TOP_ID }, LocalPeerlist = Globals.DAEMON_PEERLIST }; // debug ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "[OUT] Sending \"Handshake\" Response:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Node Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Network ID: " + Encoding.StringToHexString(Response.NodeData.NetworkId), LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Peer ID: " + Response.NodeData.PeerId, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Version: " + Response.NodeData.Version, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Local Time: " + Response.NodeData.LocalTime, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Port: " + Response.NodeData.Port, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Core Sync Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Current Height: " + Response.PayloadData.CurrentHeight, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Top ID: " + Encoding.StringToHexString(Response.PayloadData.TopId), LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Local Peerlist:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Entries: " + Response.LocalPeerlist.Length, LogLevel.DEBUG); // Reply with response Context.Reply(Peer, Id, Response.Serialize(), true); } // Command is a response else if (Command.IsResponse && Peer.State != PeerState.Verified) { // Deserialize response Response Response = Response.Deserialize(Command.Data); // debug ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "[IN] Received \"Handshake\" Response:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Response Requested: " + !Command.IsNotification, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Node Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Network ID: " + Encoding.StringToHexString(Response.NodeData.NetworkId), LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Peer ID: " + Response.NodeData.PeerId, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Version: " + Response.NodeData.Version, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Local Time: " + Response.NodeData.LocalTime, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Port: " + Response.NodeData.Port, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Core Sync Data:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Current Height: " + Response.PayloadData.CurrentHeight, LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Top ID: " + Encoding.StringToHexString(Response.PayloadData.TopId), LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, "- Local Peerlist:", LogLevel.DEBUG); ConsoleMessage.WriteLine(ConsoleMessage.DefaultColor, " - Entries: " + Response.LocalPeerlist.Length, LogLevel.DEBUG); // TODO: Do something with response data } }