示例#1
0
        private static C8Tuple GetRow(C8xSchema schema, string buff)
        {
            var fields = buff.Split(',');
            if (fields.Length != schema.Count + 1 )
            {
                throw new ArgumentException("Column count error");
            }
            var msgTimeStamp = Epoch.AddTicks(long.Parse(fields[0]) * 10).ToLocalTime();
            var row = new C8Tuple(schema,msgTimeStamp);

            for (int ii = 0; ii < schema.Count; ii++)
            {
                var t = schema.ColumnTypes[ii];
                string item = fields[ii+1]; // one extra for Timestamp that we skip here
                object val = item;
                if (t == typeof(DateTime))
                {
                    val = Epoch.AddTicks(long.Parse(item) * 10).ToLocalTime();
                }
                else if (t == typeof(bool))
                {
                    val = bool.Parse(item);
                }
                else if (t == typeof(int))
                {
                    val = int.Parse(item);
                }
                else if (t == typeof(double))
                {
                    val = double.Parse(item);
                }
                else if (t == typeof(long))
                {
                    val = long.Parse(item);
                }
                row[ii] = val;
            }
            return row;
        }
示例#2
0
        public C8xSchema GetTD(string streamUrl)
        {
            var resp = GetSOAPResponse("GetTD", string.Format("<uri>{0}</uri>", streamUrl));
            resp = resp.Replace(@"xsi:type=""", @"C8Type=""");
            var tdesc = TupleDescriptor.Deserialize(resp);

            int ii = 0;
            var schema = new C8xSchema();
            schema.ColumnNames = tdesc.Field.Select(f => f.Name).ToArray();
            schema.ColumnPositionMap = tdesc.Field.ToDictionary(f => f.Name, f => ii++);
            schema.ColumnTypes = tdesc.Field.Select(f=>ConvertC8StringTypeToCLRType(f.C8Type)).ToArray();
            return schema;
        }