private static void DataReceived(UdpReceiveResult data) { // Ignore messages from self if (!GetLocalAddresses().Contains(data.RemoteEndPoint.Address)) { Mantis.Debug("DataReceived => {0}", Encoding.ASCII.GetString(data.Buffer)); foreach (Action <UdpReceiveResult> callback in s_rawMessagePump) { callback(data); } try { string jsonString = Encoding.ASCII.GetString(data.Buffer); Protocol.BreweryMessage message = Protocol.BreweryMessage.FromString(jsonString); if (message != null) { if (message is Protocol.ControlMessage) // We ignore control messages sent to devices { return; } foreach (var callback in s_breweryMessages) { callback(message); } } } catch (Exception ex) { Mantis.Error("Dropping incoming packet, exception: {0}", ex.Message); } } }
private static void SendOnAll(byte[] buffer) { foreach (IPEndPoint endpoint in GetBroadcastEndpoints()) { Mantis.Debug("Send to {0} => {1}", endpoint.ToString(), Encoding.ASCII.GetString(buffer)); foreach (var callback in s_rawMessageSends) { callback(endpoint, buffer); } s_client.Send(buffer, buffer.Length, endpoint); } }
public async Task <ActionResult <Mantis> > PostItem(Mantis item) { if (item == null) { return(BadRequest()); } if (_myContext.MantisExist(item.Id)) { return(BadRequest("Mantis id already exist!")); } _myContext.MantisItems.Add(item); await _myContext.SaveChangesAsync(); return(CreatedAtAction(nameof(GetTodoItems), new { id = item.Id }, item)); }
static void Main(string[] args) { Savanna savanna = new Savanna(); savanna.inhabitants = new List <Animal>(); Aquarium aquarium = new Aquarium(); Pool sealPool = new Pool(); ReptileHouse snakePit = new ReptileHouse(); Aviary aviary = new Aviary(); Mantis manny = new Mantis(); manny.name = "Manny"; manny.species = new TenoderaAngustipennis(); Mantis danny = new Mantis(); danny.name = "Danny"; danny.species = new TenoderaSinensis(); FlyingSquirrel scrat = new FlyingSquirrel(); scrat.name = "Scrat"; scrat.species = new TenoderaAngustipennis(); savanna.inhabitants.Add(manny); savanna.inhabitants.Add(danny); savanna.inhabitants.Add(scrat); foreach (Animal a in savanna.inhabitants) { Console.WriteLine("{0} the {1} in the genus {2}. To find out more visit {3}.", a.name, a.species.commonName, a.species.genus.scientificName, a.species.url); } }
public async Task <IActionResult> PutItem(int id, Mantis item) { if (item == null) { return(BadRequest()); } if (id != item.Id) { return(BadRequest()); } if (!_myContext.MantisExist(id)) { return(NotFound()); } _myContext.Entry(item).State = EntityState.Modified; await _myContext.SaveChangesAsync(); return(NoContent()); }
static void Main(string[] args) { // Create an savanna habitat and Savanna savanna = new Savanna(); savanna.inhabitants = new List <Animal>(); savanna.name = "African Grasslands"; // Create an aquarium habitat Aquarium aquarium = new Aquarium(); aquarium.name = "Coral Reef"; // Create a pool habitat Pool sealPool = new Pool(); sealPool.name = "California Coast"; // Create a snake pit habitat ReptileHouse snakePit = new ReptileHouse(); snakePit.name = "Snake Pit"; // Create an aviary habitat Aviary aviary = new Aviary(); aviary.name = "Tropical Canopy"; // Create the Zoo and add all the habitats to it Zoo zoolandia = new Zoo(); zoolandia.habitats.Add(aviary); zoolandia.habitats.Add(savanna); zoolandia.habitats.Add(aquarium); zoolandia.habitats.Add(sealPool); zoolandia.habitats.Add(snakePit); // Create some animals Mantis manny = new Mantis(); manny.name = "Manny"; manny.species = new TenoderaAngustipennis(); Mantis danny = new Mantis(); danny.name = "Danny"; danny.species = new TenoderaSinensis(); FlyingSquirrel scrat = new FlyingSquirrel(); scrat.name = "Scrat"; scrat.species = new Pteromyini(); scrat.airSpeed = 4; // scrat.fly(); // Add the sample animals to the savanna habitat savanna.inhabitants.Add(manny); savanna.inhabitants.Add(danny); savanna.inhabitants.Add(scrat); // Output the habitats in our Zoo Console.WriteLine($"\nHabitats in `{zoolandia.marketingReport()}`\n==================================="); foreach (Habitat habitat in zoolandia.habitats) { Console.WriteLine($"{habitat.name}"); } // Iterate over the inhabitants of the savanna habitat and output // info to the console foreach (Animal a in savanna.inhabitants) { Console.WriteLine($@" {a.name} the {a.species.commonName} in the genus {a.species.genus.scientificName}. To find out more visit {a.species.url}."); } }
public MainForm() { InitializeComponent(); Mantis.Initialize(); m_diagList.View = View.Details; Mantis.OnDiagnosticsEvent += (sender, arg) => { m_diagList.Invoke(() => { ListViewItem item = new ListViewItem(arg.Timestamp.ToString("MM/dd/yyyy hh:mm:ss.fff tt")); item.SubItems.AddRange(new string[] { arg.Level.ToString(), arg.Message }); item.ToolTipText = string.Format("{0} {1}\t{2}\r\n", arg.Timestamp.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), arg.Level, arg.Message); m_diagList.Items.Add(item); m_diagList.Items[m_diagList.Items.Count - 1].EnsureVisible(); }); }; MantisDotNet.Network.NetworkPump.HookRawMessageSends((ep, buffer) => { if (RecordingInProgress && m_fileName != null) { lock (m_recordingFileLock) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(m_fileName, true)) { var record = new { Direction = "Send", Timestamp = DateTime.Now, Endpoint = ep.ToString(), Buffer = buffer, Text = Encoding.ASCII.GetString(buffer) }; file.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(record)); } } } }); MantisDotNet.Network.NetworkPump.HookRawMessagePump((result) => { if (RecordingInProgress && m_fileName != null) { lock (m_recordingFileLock) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(m_fileName, true)) { var record = new { Direction = "Recv", Timestamp = DateTime.Now, Endpoint = result.RemoteEndPoint.ToString(), Buffer = result.Buffer, Text = Encoding.ASCII.GetString(result.Buffer) }; file.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(record)); } } } m_networkList.Invoke(() => { DateTime now = DateTime.Now; ListViewItem item = new ListViewItem(now.ToString("MM/dd/yyyy hh:mm:ss.fff tt")); item.SubItems.AddRange(new string[] { "RECV", result.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result.Buffer) }); item.ToolTipText = string.Format("{0} {1}\tRECV\t{2}\r\n", DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), result.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result.Buffer)); m_networkList.Items.Add(item); m_networkList.Items[m_networkList.Items.Count - 1].EnsureVisible(); }); }); MantisDotNet.Network.NetworkPump.HookRawMessageSends((endpoint, data) => { m_networkList.Invoke(() => { DateTime now = DateTime.Now; ListViewItem item = new ListViewItem(now.ToString("MM/dd/yyyy hh:mm:ss.fff tt")); item.SubItems.AddRange(new string[] { "SEND", endpoint.ToString(), Encoding.ASCII.GetString(data) }); item.ToolTipText = string.Format("{0} {1}\tSEND\t{2}\r\n", DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), endpoint.ToString(), Encoding.ASCII.GetString(data)); m_networkList.Items.Add(item); m_networkList.Items[m_networkList.Items.Count - 1].EnsureVisible(); }); }); Mantis.OnNewBrewery += (sender, arg) => { this.Invoke(() => { ToolStripItem item = m_breweriesMenu.DropDownItems.Find(arg.Brewery.ID, true).ToList().FirstOrDefault(); if (item == null) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Name = arg.Brewery.ID; menuItem.Text = "View " + arg.Brewery.ID + "..."; bool breweryViewerExists = m_breweryViewers.ContainsKey(arg.Brewery.ID); menuItem.Click += (send, args) => { // Already available? Show it, otherwise create BreweryViewer viewer = m_breweryViewers.GetOrAdd(arg.Brewery.ID, (key) => { BreweryViewer v = new BreweryViewer(arg.Brewery); v.FormClosed += (e, a) => { BreweryViewer tmp = null; m_breweryViewers.TryRemove(arg.Brewery.ID, out tmp); }; v.Show(); return(v); }); viewer.WindowState = FormWindowState.Normal; viewer.BringToFront(); }; if (breweryViewerExists) { BreweryViewer existingViewer = null; if (m_breweryViewers.TryGetValue(arg.Brewery.ID, out existingViewer)) { existingViewer.UpdateBrewery(arg.Brewery); } } m_breweriesMenu.DropDownItems.Add(menuItem); } }); }; Mantis.OnBreweryLeave += (sender, arg) => { this.Invoke(() => { ToolStripItem item = m_breweriesMenu.DropDownItems.Find(arg.Brewery.ID, true).ToList().FirstOrDefault(); if (item != null) { m_breweriesMenu.DropDownItems.Remove(item); } }); }; }
private void discoverToolStripMenuItem_Click(object sender, EventArgs e) { Mantis.Discover(); }
static void Main(string[] args) { Console.Write("Enter network name: "); string network = Console.ReadLine(); Console.Write("Enter network pass: "******"Enter brewer name: "); string brewerName = Console.ReadLine(); object fileLock = new object(); MantisDotNet.Mantis.OnDiagnosticsEvent += (sender, arg) => { Console.WriteLine("DIAG: {0} {1}\t{2}", arg.Timestamp.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), arg.Level, arg.Message); }; MantisDotNet.Mantis.Initialize(); MantisDotNet.Network.NetworkPump.HookRawMessagePump((result) => { lock (fileLock) { using (System.IO.StreamWriter file = new System.IO.StreamWriter("network.rec", true)) { var record = new { TS = DateTime.Now, EP = result.RemoteEndPoint.ToString(), B = Encoding.ASCII.GetString(result.Buffer) }; file.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(record)); } } string message = Encoding.ASCII.GetString(result.Buffer); Console.WriteLine("Raw message from: {0} message: {1}", result.RemoteEndPoint, Encoding.ASCII.GetString(result.Buffer)); }); MantisDotNet.Network.NetworkPump.HookRawMessageSends((endpoint, data) => { //string message = Encoding.ASCII.GetString(data); //Console.WriteLine("Raw message send to: {0} len: {1} message: {2}", endpoint, message.Length, message); }); MantisDotNet.Network.NetworkPump.HookBreweryMessages((m) => { //Console.WriteLine("Got {0} from {1} => {2}", m.MessageType, (m as Network.Protocol.IncomingMessage).SourceBreweryID, m.ToString()); }); Mantis.OnNewBrewery += (o, arg) => { Console.WriteLine("New brewery discovered: {0}", arg.Brewery.ID); // arg.Brewery.OnNetworkMessage += (sender, bearg) => { Console.WriteLine("{0} Got a network message: {1}", bearg.Brewery.ID, bearg.Message.MessageType); }; arg.Brewery.OnGoodbye += (sender, bearg) => { Console.WriteLine("{0} said goodbye", bearg.Brewery.ID); }; arg.Brewery.OnNetworksReceived += (sender, bearg) => { Console.WriteLine("{0} Got network list: {1} networks", bearg.Brewery.ID, bearg.Brewery.Networks.Count()); }; arg.Brewery.OnPongReceived += (sender, bearg) => { Console.WriteLine("{0} said Pong", bearg.Brewery.ID); }; arg.Brewery.OnSettingsReceived += (sender, bearg) => { Console.WriteLine("{0} sent configuration: {1}", bearg.Brewery.ID, bearg.Brewery.Settings.ToString()); }; arg.Brewery.OnStateReceived += (sender, bearg) => { Console.WriteLine("{0} sent state: {1}", bearg.Brewery.ID, bearg.Brewery.RemoteState.ToString()); }; arg.Brewery.OnStatusText += (sender, bearg) => { Console.WriteLine("{0} said: {1}", bearg.Brewery.ID, bearg.Message); }; }; Mantis.OnBreweryLeave += (o, arg) => { Console.WriteLine("Brewery leaving: {0}", arg.Brewery.ID); }; Mantis.Discover(); Console.ReadLine(); foreach (Brewery brewery in Mantis.Breweries()) { Console.WriteLine("Configuring {0}", brewery.ID); brewery.PushSettingsAsync(new Network.Protocol.SettingsData() { BroadcastRate = 30000, CustomBrewer = brewerName, LogoIndex = 0, Network = network, Password = pass, }).Wait(); } while (true) { Console.ReadLine(); foreach (Brewery brewery in Mantis.Breweries()) { Console.WriteLine("Requesting refresh from {0}", brewery.ID); brewery.RefreshStateAsync(); Console.WriteLine("Refresh request sent"); } } }
public static void HookBreweryMessages(Action <Protocol.BreweryMessage> callback) { s_breweryMessages.Add((b) => { try { callback(b); } catch (Exception ex) { Mantis.Warning("Brewery message recv consumer may miss message: {0}", ex.Message); } }); }
public static void HookRawMessageSends(Action <IPEndPoint, byte[]> callback) { s_rawMessageSends.Add((e, b) => { try { callback(e, b); } catch (Exception ex) { Mantis.Warning("Raw message send consumer may miss message: {0}", ex.Message); } }); }
public static void HookRawMessagePump(Action <UdpReceiveResult> callback) { s_rawMessagePump.Add((u) => { try { callback(u); } catch (Exception ex) { Mantis.Warning("Raw message recv consumer may miss message: {0}", ex.Message); } }); }