Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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}.");
            }
        }
Beispiel #7
0
        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);
                    }
                });
            };
        }
Beispiel #8
0
 private void discoverToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Mantis.Discover();
 }
Beispiel #9
0
        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");
                }
            }
        }
Beispiel #10
0
 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); } });
 }
Beispiel #11
0
 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); } });
 }
Beispiel #12
0
 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); } });
 }