コード例 #1
0
 public void SetPower(int power, String username)
 {
     Console.WriteLine("Setpower in SP CTRL");
     Packet p = new PushPacket<Configuaration>(PushPacket<Configuaration>.DataType.Configuration,
         new List<Configuaration> {
             new Configuaration { Power = power, Username = username }
         },
         Settings.GetInstance().authToken);
     Console.WriteLine("Sending \n {0}", p);
     TCPController.Send(p);
 }
コード例 #2
0
ファイル: Packet.cs プロジェクト: JordySipkema/LD326_RH_A5
        private static Packet HandlePushPacket(JObject json)
        {
            Packet p = null;

            JToken datatypeToken;
            if (!json.TryGetValue("Datatype", StringComparison.OrdinalIgnoreCase, out datatypeToken)) return null;

            var type = (PushPacket<Object>.DataType)Enum.Parse(typeof (PushPacket<Object>.DataType), (string) datatypeToken);
            switch (type)
            {
                case PushPacket<Object>.DataType.Configuration:
                    p = new PushPacket<Configuaration>(json);
                    break;
            }

            return p;
        }
コード例 #3
0
        private void SendToServer(object sender, EventArgs args)
        {
            //var jsonObject = new JObject(
            //        new JProperty("CMD", "push"),
            //        new JProperty("count", 1),
            //        new JProperty("measurements", 
            //                new JArray(
            //                    JObject.FromObject(LatestMeasurement)
            //                )
            //            )
                //);

            var jsonObject = new PushPacket<Measurement>(PushPacket<Measurement>.DataType.Measurements,
                new List<Measurement>() { LatestMeasurement },
                Settings.GetInstance().authToken
                );

            //Johan's code line
            // ReSharper disable once SpecifyACultureInStringConversionExplicitly
            //json = json.Length.ToString().PadRight(4, ' ') + json;
            TCPController.Send(jsonObject.ToString());
        }
コード例 #4
0
        private void HandlePushPacket(JObject json)
        {
            //var size = json["count"];
            var measurements = json["DataSource"].Children();
            var datatype = (string)json["Datatype"];
            var authtoken = (string) json["AUTHTOKEN"];

            if (!Authentication.Authenticate(authtoken))
            {
                Send(new ResponsePacket(Statuscode.Status.Unauthorized));
                return;
            }

            int id = currentUser.Id ?? -1;
            if (currentSession == -1)
            {
                currentSession = _database.getNewTrainingSessionId(id);
                var notifyPacket = new NotifyPacket(NotifyPacket.Subject.NewTrainingId, currentSession.ToString(),
    currentUser.NonNullId.ToString(), "");
                Send(notifyPacket);
                var specs = Notifier.Instance.GetListeners((Client) currentUser).ToList();
                specs.ForEach(x => Authentication.GetStream(x).Send(notifyPacket));
            }

            if (datatype == "Measurements")
            {

                List<Measurement> measurementsL = new List<Measurement>();
                foreach (var m in measurements.Select(
                    jtoken => jtoken.ToObject<Measurement>())
                    )
                {
                    measurementsL.Add(m);
                    Console.WriteLine(Resources.ClientHandler_HandlePushPacked_Recieved, measurements.FirstOrDefault());
                }

                _database.SaveMeasurements(measurementsL, currentSession, id);

                var senderU = Authentication.GetUserByAuthToken(authtoken);
                // Check that sender is a client. if its not, return.
                if (!(senderU is Client)) return;

                var senderC = senderU as Client;
                //Should we notify anyone for this sender? If not, return.
                if (!Notifier.Instance.ShouldNotify(senderC)) return;

                // Get all handlers based on all listeners their username.
                var handlers =
                    Notifier.Instance.GetListeners(senderC)
                        .Select(listener => Authentication.GetStream(listener.Username));

                var mList = measurements.Select(m => JsonConvert.DeserializeObject<Measurement>(m.ToString())).ToList();

                // Building new json


                foreach (var handler in handlers)
                {
                    Console.WriteLine("Notified " + handler.currentUser.Fullname);
                    var returnJson = new DataFromClientPacket<Measurement>(mList, "measurements", currentUser.NonNullId);
                    //new PullResponsePacket<Measurement>(mList, "measurements");
                    handler.Send(returnJson);
                }
                //Console.WriteLine("Notified the listeners");
            }
            else if (datatype.Equals("Configuration", StringComparison.CurrentCultureIgnoreCase))
            {
                var p = new PushPacket<Configuaration>(json);
                var config = p.DataSource.FirstOrDefault();
                if (config == null)
                    return;

                Console.WriteLine("Sending config-push-packet");
                var stream = Authentication.GetStream(config.Username);
                stream.Send(p);
            }

        }