Пример #1
0
    private void HandleStartClientResponse(int clientId, int hostClientId)
    {
        Debug.Log("HandleStartClientResponse clientId = " + clientId + " hostClientId = " + hostClientId);
        if (connectTask != null)
        {
            this.ClientId     = clientId;
            this.hostClientId = (uint)hostClientId;
            RelayEvent re = new RelayEvent()
            {
                ChannelName = mlapidefaultChannel,
                ClientId    = (ulong)clientId,
                payload     = new ArraySegment <byte>(),
                receiveTime = timeSinceStartup,
                eventType   = NetEventType.Connect
            };

            /*connectTask.Tasks[0].Success = true;
             * connectTask.Tasks[0].IsDone = true;
             * connectTask = null;*/
            lock (receivedEvents)
            {
                receivedEvents.Enqueue(re);
            }
        }
    }
Пример #2
0
    private void HandleReceiveFromClient(int fromClientId, byte channelId, ArraySegment <byte> payload)
    {
        if (connectTask != null)
        {
            connectTask.Tasks[0].Success = true;
            connectTask.Tasks[0].IsDone  = true;
            connectTask = null;
        }

        RelayEvent re = new RelayEvent()
        {
            ChannelName = channelIdToName[channelId],
            ClientId    = (ulong)fromClientId,
            payload     = payload,
            receiveTime = timeSinceStartup,
            eventType   = NetEventType.Data
        };

        //Debug.Log("Received payload from client " + fromClientId + " bytes: " + payload.Count+" channel: "+re.ChannelName);
        //Debug.Log("payload-data: " + BitConverter.ToString(payload.Array, payload.Offset, payload.Count));
        lock (receivedEvents)
        {
            receivedEvents.Enqueue(re);
        }
    }
Пример #3
0
        /// <summary>
        /// Handling incoming remote events
        /// </summary>
        private async Task OnRelayEvent(RelayEvent relayEvent, RelayEventStream eventStream)
        {
            switch (relayEvent.EventType)
            {
            case RelayEventType.Connected:
                await InitializeClient();

                break;

            case RelayEventType.Disconnected:
                _eventHandler.OnDisconnected();
                break;

            case RelayEventType.IncomingEvent:
                DispatchEvent(relayEvent.IncomingEvent);
                break;

            case RelayEventType.Error:
                _eventHandler.OnError(relayEvent.Error);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public void TestToStringMethod()
        {
            Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name);

            RelayEvent myRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m);

            string strRelayEvent = myRelayEvent.ToString();

            Console.WriteLine("My string:" + Environment.NewLine + Environment.NewLine);
            Console.WriteLine(strRelayEvent + Environment.NewLine);

            Console.WriteLine("Expecting:" + Environment.NewLine + Environment.NewLine);
            Console.WriteLine("First Place: A - PLM: 11.3" + Environment.NewLine +
                              "First Place Pts: PLM: 5 GWY: 0" + Environment.NewLine +
                              "Second Place: A - GWY: 11.4" + Environment.NewLine +
                              "Second Place Pts: PLM: 0 GWY: 0" + Environment.NewLine +
                              "Total: PLM: 5 GWY: 0");

            Assert.AreEqual(strRelayEvent, "First Place: A - PLM: 11.3" + Environment.NewLine +
                            "First Place Pts: PLM: 5 GWY: 0" + Environment.NewLine +
                            "Second Place: A - GWY: 11.4" + Environment.NewLine +
                            "Second Place Pts: PLM: 0 GWY: 0" + Environment.NewLine +
                            "Total: PLM: 5 GWY: 0",
                            GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed");

            Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed");
        }
Пример #5
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            RelayEvent relayEvent = db.RelayEvents.Find(id);

            db.RelayEvents.Remove(relayEvent);
            db.SaveChanges();
            return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID }));
        }
        public void TestDefaultConstructor()
        {
            Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name);
            RelayEvent blankPerformance = new RelayEvent();

            Assert.AreEqual(blankPerformance != null, true, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed");
            Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed");
        }
Пример #7
0
        public void Publish_Args <T>(T value)
        {
            var result = default(T);
            var ev     = new RelayEvent <T>();

            ev.Subscribe(x => { result = x; });
            ev.Publish(value);
            Assert.That(result, Is.EqualTo(value));
        }
Пример #8
0
        public void Publish_Subscribe()
        {
            var count = 0;
            var ev    = new RelayEvent();

            ev.Subscribe(() => ++ count);
            ev.Publish();
            ev.Publish();
            ev.Publish();
            Assert.That(count, Is.EqualTo(3));
        }
Пример #9
0
        // GET: RelayEvents/Create
        public ActionResult Create(Guid id)
        {
            ViewData["relayparentid"] = id;
            RelayEvent eventToCreate = new RelayEvent();

            eventToCreate.RelayId           = id;
            eventToCreate.StartTime         = DateTime.Now;
            eventToCreate.DurationInMinutes = 15;
            eventToCreate.EndTime           = eventToCreate.StartTime.AddMinutes(15);
            return(View(eventToCreate));
        }
Пример #10
0
        // GET: RelayEvents/Create
        public ActionResult Create(Guid id)
        {
            ViewData["relayparentid"] = id;
            RelayEvent eventToCreate = new RelayEvent();

            eventToCreate.RelayID  = id;
            eventToCreate.start    = DateTime.Now;
            eventToCreate.duration = 1;
            eventToCreate.end      = eventToCreate.start.AddMinutes(5);
            return(View(eventToCreate));
        }
Пример #11
0
        public void TestEqualsMethod()
        {
            Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name);
            bool test = true;

            RelayEvent controlRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m);

            RelayEvent equalRelayEvent    = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m);
            RelayEvent diffTeam1          = new RelayEvent("WH", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m);
            RelayEvent diffTeam2          = new RelayEvent("PLM", "WH", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m);
            RelayEvent diffFirstPlacePts  = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P4", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m);
            RelayEvent diffSecondPlacePts = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.45"), 8.0m, 1.0m);
            RelayEvent diffTotalPts       = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 9.0m, 0.0m);
            RelayEvent nullRelayEvent     = new RelayEvent();

            if (!controlRelayEvent.Equals(equalRelayEvent))
            {
                test = false;
                Console.WriteLine("equalRelayEvent was not equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(diffTeam1))
            {
                test = false;
                Console.WriteLine("diffTeam1 was equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(diffTeam2))
            {
                test = false;
                Console.WriteLine("diffTeam2 was equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(diffFirstPlacePts))
            {
                test = false;
                Console.WriteLine("diffFirstPlacePts was equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(diffSecondPlacePts))
            {
                test = false;
                Console.WriteLine("diffSecondPlacePts was equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(diffTotalPts))
            {
                test = false;
                Console.WriteLine("diffTotalPts was equal to controlRelayEvent");
            }
            if (controlRelayEvent.Equals(nullRelayEvent))
            {
                test = false;
                Console.WriteLine("nullRelayEvent was equal to controlRelayEvent");
            }

            Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed");
            Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed");
        }
Пример #12
0
        public ActionResult Edit([Bind(Include = "ID,RelayID,start,end,duration,DurationType")] RelayEvent relayEvent)
        {
            if (ModelState.IsValid)
            {
                db.Entry(relayEvent).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID }));
            }
            return(View(relayEvent));
        }
Пример #13
0
        public void Unsubscribe_Args(int value)
        {
            var count      = 0;
            var ev         = new RelayEvent <int>();
            var disposable = ev.Subscribe(n => count += n);

            ev.Publish(value);
            ev.Publish(value);
            disposable.Dispose();
            disposable.Dispose(); // ignore
            ev.Publish(value);
            Assert.That(count, Is.EqualTo(value * 2));
        }
Пример #14
0
        public void Unsubscribe()
        {
            var count      = 0;
            var ev         = new RelayEvent();
            var disposable = ev.Subscribe(() => count++);

            ev.Publish();
            ev.Publish();
            disposable.Dispose();
            disposable.Dispose(); // ignore
            ev.Publish();
            Assert.That(count, Is.EqualTo(2));
        }
Пример #15
0
        public ActionResult Create([Bind(Include = "Id,RelayId,StartTime,EndTime,DurationInMinutes")] RelayEvent relayEvent)
        {
            if (ModelState.IsValid)
            {
                relayEvent.Id = Guid.NewGuid();

                db.RelayEvents.Add(relayEvent);
                db.SaveChanges();

                return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayId }));
            }

            return(View(relayEvent));
        }
Пример #16
0
        /// <summary>
        /// Tests parameterized constructor
        /// </summary>
        /// <remarks>Each attribute is tested individually for accuracy</remarks>
        public void TestParameterizedConstructor()
        {
            Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name);
            bool test = true;

            IndEvent indEvent1 = new IndEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 8.0m, 1.0m);
            IndEvent indEvent2 = new IndEvent("PLM", "GWY", new EventPoints(0.0m, 5.0m, "P5", "PLM", "11.2"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 3.0m, 6.0m);
            Dictionary <string, IndEvent> indEvents = new Dictionary <string, IndEvent>();

            indEvents.Add("Boy's 100", indEvent1);
            indEvents.Add("Boy's 200", indEvent2);

            RelayEvent relayEvent1 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m);
            RelayEvent relayEvent2 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "400"), new EventPoints(0.0m, 0.0m, "A", "GWY", "500"), 5.0m, 0.0m);
            Dictionary <string, RelayEvent> relayEvents = new Dictionary <string, RelayEvent>();

            relayEvents.Add("Boy's 4x100", relayEvent1);
            relayEvents.Add("Boy's 4x400", relayEvent2);

            OverallScore myOverallScore = new OverallScore(Tuple.Create("PLM", "Plum"), Tuple.Create("GWY", "Gateway"), indEvents, relayEvents);

            if (myOverallScore == null)
            {
                test = false;
                Console.WriteLine("myOverallScore is null");
            }
            if (!myOverallScore.team1.Equals(Tuple.Create("PLM", "Plum", 10.0m)))
            {
                test = false;
                Console.WriteLine("team1 does not have the correct value");
            }
            if (!myOverallScore.team2.Equals(Tuple.Create("GWY", "Gateway", 6.0m)))
            {
                test = false;
                Console.WriteLine("team2 does not have the correct value");
            }
            if (!myOverallScore.indEvents.OrderBy(r => r.Key).SequenceEqual(indEvents.OrderBy(r => r.Key)))
            {
                test = false;
                Console.WriteLine("indEvents does not have the correct value");
            }
            if (!myOverallScore.relayEvents.OrderBy(r => r.Key).SequenceEqual(relayEvents.OrderBy(r => r.Key)))
            {
                test = false;
                Console.WriteLine("relayEvents does not have the correct value");
            }

            Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed");
            Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed");
        }
Пример #17
0
        // GET: RelayEvents/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RelayEvent relayEvent = db.RelayEvents.Find(id);

            if (relayEvent == null)
            {
                return(HttpNotFound());
            }
            return(View(relayEvent));
        }
Пример #18
0
 public OverallScore AddEvent(OverallScore scores, string eventName, RelayEvent eventToAdd)
 {
     try
     {
         IScoringSvc  scoringSvc = (IScoringSvc)GetService(typeof(IScoringSvc).Name);
         OverallScore os         = scoringSvc.AddEvent(scores, eventName, eventToAdd);
         return(os);
     }
     catch (Exception e) //Implement more specific Exceptions later
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
         return(null);
     }
 }
Пример #19
0
 public RelayEvent CalculateRelayEvent(string team1Abbr, string team2Abbr, List <Performance> perf)
 {
     try
     {
         IScoringSvc scoringSvc = (IScoringSvc)GetService(typeof(IScoringSvc).Name);
         RelayEvent  re         = scoringSvc.CalculateRelayEvent(team1Abbr, team2Abbr, perf);
         return(re);
     }
     catch (Exception e) //Implement more specific Exceptions later
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
         return(null);
     }
 }
Пример #20
0
    private void HandleClientConnected(int clientId)
    {
        RelayEvent re = new RelayEvent()
        {
            ChannelName = mlapidefaultChannel,
            ClientId    = (ulong)clientId,
            payload     = new ArraySegment <byte>(),
            receiveTime = timeSinceStartup,
            eventType   = NetEventType.Connect
        };

        lock (receivedEvents)
        {
            receivedEvents.Enqueue(re);
        }
    }
Пример #21
0
        public void TestParameterizedConstructor()
        {
            Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name);
            bool test = true;

            RelayEvent myRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m);

            if (myRelayEvent == null)
            {
                test = false;
                Console.WriteLine("myRelayEvent is null");
            }
            if (myRelayEvent.team1 != "PLM")
            {
                test = false;
                Console.WriteLine("team1 does not have the correct value");
            }
            if (myRelayEvent.team2 != "GWY")
            {
                test = false;
                Console.WriteLine("team2 does not have the correct value");
            }
            if (!myRelayEvent.points[0].Equals(new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3")))
            {
                test = false;
                Console.WriteLine("firstPlacePts does not have the correct value");
            }
            if (!myRelayEvent.points[1].Equals(new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4")))
            {
                test = false;
                Console.WriteLine("secondPlacePts does not have the correct value");
            }
            if (myRelayEvent.team1Total != 5.0m)
            {
                test = false;
                Console.WriteLine("team1Total does not have the correct value");
            }
            if (myRelayEvent.team2Total != 0.0m)
            {
                test = false;
                Console.WriteLine("team2Total does not have the correct value");
            }

            Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed");
            Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed");
        }
Пример #22
0
    private void HandleClientDisconnected(int remoteClientId)
    {
        Debug.Log("HandleClientDisconnected remoteClientId = " + remoteClientId);
        RelayEvent re = new RelayEvent()
        {
            ChannelName = mlapidefaultChannel,
            ClientId    = (ulong)remoteClientId,
            payload     = new ArraySegment <byte>(),
            receiveTime = timeSinceStartup,
            eventType   = NetEventType.Disconnect
        };

        lock (receivedEvents)
        {
            receivedEvents.Enqueue(re);
        }
    }
Пример #23
0
        /// <summary>
        /// Interface for calculating The overall score of a meet
        /// </summary>
        /// <param name="scores">Overall scores</param>
        /// <param name="gender">string to hold what gender the meet is, boy's or girl's</param>
        /// <returns>OverallScore object that holds accurate overall score points</returns>
        public OverallScore CalculateTotal(OverallScore scores, string gender)
        {
            decimal    totalPointsTeam1 = 0;
            decimal    totalPointsTeam2 = 0;
            IndEvent   tempIndEvent     = new IndEvent();
            RelayEvent tempRelayEvent   = new RelayEvent();

            string[] validIndEvents = { "100", "200", "400", "800", "1600",    "3200",   "HH", "300H",
                                        "LJ",  "TJ",  "HJ",  "PV",  "ShotPut", "Discus", "Javelin" };

            for (int i = 0; i < validIndEvents.Length; i++)
            {
                if (scores != null && scores.indEvents != null)
                {
                    scores.indEvents.TryGetValue(gender + "'s " + validIndEvents[i], out tempIndEvent);
                    if (tempIndEvent != null)
                    {
                        totalPointsTeam1 += tempIndEvent.team1Total;
                        totalPointsTeam2 += tempIndEvent.team2Total;
                    }
                }
            }

            //DO THE SAME FOR RELAY EVENTS
            string[] validRelayEvents = { "4x100", "4x400", "4x800" };

            for (int i = 0; i < validRelayEvents.Length; i++)
            {
                if (scores != null && scores.relayEvents != null)
                {
                    scores.relayEvents.TryGetValue(gender + "'s " + validRelayEvents[i], out tempRelayEvent);
                    if (tempRelayEvent != null)
                    {
                        totalPointsTeam1 += tempRelayEvent.team1Total;
                        totalPointsTeam2 += tempRelayEvent.team2Total;
                    }
                }
            }

            scores.team1Points = totalPointsTeam1;
            scores.team2Points = totalPointsTeam2;

            return(scores);
        }
Пример #24
0
        protected override void Seed(RaspContext context)
        {
            var devices     = new List <Device>();
            var relays      = new List <Relay>();
            var relayevents = new List <RelayEvent>();

            Device device1 = new Device();

            device1.devicenumber = 0;
            device1.Name         = "0001d";
            device1.ID           = Guid.NewGuid();
            device1.MaxRelays    = 6;

            devices.Add(device1);

            Relay rel1 = new Relay();

            rel1.DeviceID = device1.ID;
            rel1.Index    = 0;
            rel1.Name     = "r01:0001d";
            rel1.ID       = Guid.NewGuid();
            relays.Add(rel1);

            RelayEvent ev11 = new RelayEvent {
                end = DateTime.Now, start = DateTime.Now, ID = Guid.NewGuid(), DurationType = "1", duration = 15, RelayID = rel1.ID
            };

            relayevents.Add(ev11);


            devices.ForEach(s => context.Devices.Add(s));
            context.SaveChanges();

            relays.ForEach(s => context.Relays.Add(s));
            context.SaveChanges();

            relayevents.ForEach(s => context.RelayEvents.Add(s));
            context.SaveChanges();
        }
        public void TestCreateMeetResultsDoc()
        {
            IndEvent indEvent1 = new IndEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 8.0m, 1.0m);
            IndEvent indEvent2 = new IndEvent("PLM", "GWY", new EventPoints(0.0m, 5.0m, "P5", "PLM", "11.2"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 3.0m, 6.0m);
            Dictionary <string, IndEvent> indEvents = new Dictionary <string, IndEvent>();

            indEvents.Add("Boy's 100", indEvent1);
            indEvents.Add("Boy's 200", indEvent2);

            RelayEvent relayEvent1 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m);
            RelayEvent relayEvent2 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "400"), new EventPoints(0.0m, 0.0m, "A", "GWY", "500"), 5.0m, 0.0m);
            Dictionary <string, RelayEvent> relayEvents = new Dictionary <string, RelayEvent>();

            relayEvents.Add("Boy's 4x100", relayEvent1);
            relayEvents.Add("Boy's 4x400", relayEvent2);

            OverallScore myOverallScore = new OverallScore(Tuple.Create("PLM", "Plum"), Tuple.Create("GWY", "Gateway"), indEvents, relayEvents);

            PrintoutDocXSvcImpl pdxi = new PrintoutDocXSvcImpl();

            pdxi.CreateMeetResultsDoc("Boy's", new DateTime(01, 01, 2000), "Anywhere", myOverallScore);
        }
Пример #26
0
    private void HandleDisconnect()
    {
        Debug.Log("HandleDisconnect ClientId = " + ClientId);

        if (connectTask != null)
        {
            connectTask.Tasks[0].Success = false;
            connectTask.Tasks[0].IsDone  = true;
            connectTask = null;
        }


        lock (startStopClientLock)
        {
            if (started)
            {
                started = false;
                tcpClient.Dispose();
                tcpClient = null;
            }
        }

        if (ClientId != -1)
        {
            RelayEvent re = new RelayEvent()
            {
                ChannelName = mlapidefaultChannel,
                ClientId    = (ulong)ClientId,
                payload     = new ArraySegment <byte>(),
                receiveTime = timeSinceStartup,
                eventType   = NetEventType.Disconnect
            };
            lock (receivedEvents)
            {
                receivedEvents.Enqueue(re);
            }
            ClientId = -1;
        }
    }
Пример #27
0
        protected override void Seed(RaspBerryWebAppPro.Models.ApplicationDbContext context)
        {
            var devices     = new List <Device>();
            var relays      = new List <Relay>();
            var relayevents = new List <RelayEvent>();

            Device device1 = new Device();

            device1.SerialNumber = 0;
            device1.Name         = "0001d";
            device1.Id           = Guid.NewGuid();

            devices.Add(device1);

            Relay rel1 = new Relay();

            rel1.DeviceId = device1.Id;
            rel1.Index    = 0;
            rel1.Name     = "r01:0001d";
            rel1.Id       = Guid.NewGuid();
            relays.Add(rel1);

            RelayEvent ev11 = new RelayEvent {
                EndTime = DateTime.Now, StartTime = DateTime.Now, Id = Guid.NewGuid(), DurationInMinutes = 15, RelayId = rel1.Id
            };

            relayevents.Add(ev11);


            devices.ForEach(s => context.Devices.Add(s));
            context.SaveChanges();

            relays.ForEach(s => context.Relays.Add(s));
            context.SaveChanges();

            relayevents.ForEach(s => context.RelayEvents.Add(s));
            context.SaveChanges();
        }
Пример #28
0
 public override NetEventType PollEvent(out ulong clientId, out string channelName, out ArraySegment <byte> payload, out float receiveTime)
 {
     lock (receivedEvents)
     {
         if (receivedEvents.Count > 0)
         {
             RelayEvent re = receivedEvents.Dequeue();
             clientId    = re.ClientId;
             channelName = re.ChannelName;
             payload     = re.payload;
             receiveTime = re.receiveTime;
             return(re.eventType);
         }
         else
         {
             clientId    = 0;
             channelName = "";
             payload     = new ArraySegment <byte>();
             receiveTime = timeSinceStartup;
             return(NetEventType.Nothing);
         }
     }
 }
Пример #29
0
        /// <summary>
        /// Implementation for adding a relayEvent to an OverallScore object
        /// </summary>
        /// <param name="scores">Overall scores</param>
        /// <param name="eventName">Name of the event being added</param>
        /// <param name="eventToAdd">Data for the event being added</param>
        /// <returns>OverallScore with the event added</returns>
        public OverallScore AddEvent(OverallScore scores, string eventName, RelayEvent eventToAdd)
        {
            if (scores == null)
            {
                scores = new OverallScore();
            }

            if (scores.relayEvents == null)
            {
                scores.relayEvents = new Dictionary <string, RelayEvent>();
            }

            if (scores.relayEvents != null && scores.relayEvents.ContainsKey(eventName))
            {
                scores.relayEvents[eventName] = eventToAdd;
            }
            else
            {
                scores.relayEvents.Add(eventName, eventToAdd);
            }

            return(scores);
        }
Пример #30
0
        public ActionResult Create([Bind(Include = "ID,RelayID,start,duration,DurationType")] RelayEvent relayEvent)
        {
            if (ModelState.IsValid)
            {
                relayEvent.ID = Guid.NewGuid();
                int durationMultipler = 1;
                if (relayEvent.DurationType == "1")
                {
                    durationMultipler = 5;
                }
                else if (relayEvent.DurationType == "2")
                {
                    durationMultipler = 60;
                }
                relayEvent.end = relayEvent.start.AddMinutes(durationMultipler * relayEvent.duration);

                db.RelayEvents.Add(relayEvent);
                db.SaveChanges();

                return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID }));
            }

            return(View(relayEvent));
        }