コード例 #1
0
        public void MarkReady(bool b)
        {
            lock (_ready_lock)
            {
                _ready = b;
                if (Utils.Millis > t0 && _ready)
                {
                    int balance = StateLog.Instance.Nodes.NodeCount;
                    if (balance == 0)
                    {
                        balance = 1;
                    }
                    for (int bs = 0; bs < balance; bs++)
                    {
                        Params.STEP++;
                        Location loc = new Location()
                        {
                            HasPoint = new List <Point> {
                            }
                        };

                        for (int i = 0; i < points_nr; i++)
                        {
                            loc.HasPoint.Add(new Point()
                            {
                                ID = i.ToString()
                            });
                        }

                        ESBDataRequest dr = new ESBDataRequest()
                        {
                            Type        = DataRequest._Type.WRITE,
                            Priority    = 2,
                            Value       = Params.STEP.ToString(),
                            Received    = Utils.Micros.ToString(),
                            Benv        = loc,
                            ReturnTopic = "MyApplication"
                        };
                        ReceiveDataRequest(dr);
                        t0 = Utils.Millis + Params.HERTZ;
                        MarkReady(false);
                    }
                }
            }
        }
コード例 #2
0
        public void MarshallDataRequest(ESBDataRequest esbRequest)
        {
            Dictionary <string, List <string> > pointDetails = ExtractFromRDF(esbRequest.Benv);

            // List<Request> requests = new List<Request>();
            string      assigned_to = StateLog.Instance.Nodes.ScheduleRequest();
            DataRequest action      = new DataRequest()
            {
                Type         = esbRequest.Type,
                PointDetails = pointDetails,
                Priority     = esbRequest.Priority,
                Value        = esbRequest.Value,
                ID           = Utils.GenerateUUID(),
                Assigned     = assigned_to,
                ReturnTopic  = esbRequest.ReturnTopic,
                Received     = Utils.Micros.ToString() // debugging
            };

            if (assigned_to != null)
            {
                // Logger.Write(Logger.Tag.WARN, "SCHEDULING to " + action.Assigned);
                StateLog.Instance.AppendAction(action);
                Call r0 = new Call()
                {
                    ID   = Utils.GenerateUUID(),
                    Data = Encoder.EncodeDataRequest(action),
                    Type = Call._Type.DATA_REQUEST
                };
                StateLog.Instance.AddToAllBehind(r0);
                // requests.Add(r0);
            }
            else
            {
                if (Params.TEST_RECEIVER_HOST != string.Empty)
                {
                    try
                    {
                        TestReceiverClient.Instance.AddEntryError("Failed to deploy driver and to process request.");
                    } catch (Exception e)
                    {
                        Logger.Write(Logger.Tag.ERROR, "ADD_ENTRY: " + e.ToString());
                    }
                }
            }
        }
コード例 #3
0
ファイル: Bytes.cs プロジェクト: emilkolvigraun/Tangible
        public static void Run()
        {
            int bytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(new Point()
            {
                ID = "sensor_999"
            }, Formatting.None)).Length;

            Console.WriteLine("Point bytes: " + bytes);
            ESBDataRequest dr = new ESBDataRequest()
            {
                Type     = DataRequest._Type.WRITE,
                Priority = 2,
                Value    = Params.STEP.ToString(),
                // T0 = Utils.Micros.ToString(),
                Benv = new Location()
                {
                    HasPoint = new List <Point> {
                        new Point()
                        {
                            ID = "sensor_999"
                        }
                    }
                },
                ReturnTopic = "MyApplication"
            };

            Console.WriteLine(JsonConvert.SerializeObject(dr));
            int bytes_dr = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(dr, Formatting.None)).Length;

            Console.WriteLine("DR bytes: " + bytes_dr);

            DataRequest action = new DataRequest()
            {
                Type         = dr.Type,
                PointDetails = new Dictionary <string, List <string> > {
                    { "docker-image-1", new List <string> {
                          "sensor_999"
                      } }
                },
                Priority = dr.Priority,
                Value    = dr.Value,
                ID       = Utils.GenerateUUID(),
                Assigned = StateLog.Instance.Nodes.ScheduleRequest(),
                // T0 = dr.T0,
                // T1 = Utils.Micros.ToString(),
                ReturnTopic = dr.ReturnTopic
            };
            Call r0 = new Call()
            {
                ID   = Utils.GenerateUUID(),
                Data = Encoder.EncodeDataRequest(action),
                Type = Call._Type.DATA_REQUEST
            };
            int bytes_r0 = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(r0, Formatting.None)).Length;

            Console.WriteLine("r0 bytes: " + bytes_dr);

            int bytes_rb = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(new ProcedureCallBatch()
            {
                Batch = new List <Call> {
                    r0
                },
                Completed = new HashSet <string> {
                    "sensor_999"
                },
                Sender = Credentials.Self,
                Step   = 10000000000
            }, Formatting.None)).Length;

            Console.WriteLine("rb bytes: " + bytes_rb);
        }
コード例 #4
0
 public static byte[] EncodeESBDataRequest(ESBDataRequest node)
 {
     return(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(node, Formatting.None)));
 }
コード例 #5
0
 public void ReceiveDataRequest(ESBDataRequest dataRequest)
 {
     HA.MarshallDataRequest(dataRequest);
 }