public static async Task <FdbSystemStatus> GetStatusAsync([NotNull] IFdbReadOnlyTransaction trans) { Contract.NotNull(trans, nameof(trans)); Slice data = await trans.GetAsync(StatusJsonKey).ConfigureAwait(false); if (data.IsNullOrEmpty) { return(null); } string jsonText = data.ToUnicode(); var doc = TinyJsonParser.ParseObject(jsonText); if (doc == null) { return(null); } long rv = 0; if (doc.ContainsKey("cluster")) { rv = await trans.GetReadVersionAsync(); } return(new FdbSystemStatus(doc, rv, jsonText)); }
//TODO: values will vary depending on the "Role" ! public static ProcessRoleMetrics Create(Dictionary <string, object?>?data) { string?role = TinyJsonParser.GetStringField(data, "role"); switch (role) { case null: return(null !); //invalid! case "master": return(new MasterRoleMetrics(data)); case "proxy": return(new ProxyRoleMetrics(data)); case "resolver": return(new ResolverRoleMetrics(data)); case "cluster_controller": return(new ClusterControllerRoleMetrics(data)); case "log": return(new LogRoleMetrics(data)); case "storage": return(new StorageRoleMetrics(data)); default: return(new ProcessRoleMetrics(data, role)); } }
public static async Task <FdbSystemStatus?> GetStatusAsync(IFdbReadOnlyTransaction trans) { Contract.NotNull(trans); var data = await trans.GetAsync(StatusJsonKey).ConfigureAwait(false); if (data.IsNullOrEmpty) { return(null); } var doc = TinyJsonParser.ParseObject(data); if (doc == null) { return(null); } long rv = 0; if (doc.ContainsKey("cluster")) { rv = await trans.GetReadVersionAsync(); } return(new FdbSystemStatus(doc, rv, data)); }
internal FdbSystemStatus(Dictionary <string, object?>?doc, long readVersion, Slice raw) : base(doc) { this.Client = new ClientStatus(TinyJsonParser.GetMapField(doc, "client")); this.Cluster = new ClusterStatus(TinyJsonParser.GetMapField(doc, "cluster")); this.ReadVersion = readVersion; this.RawData = raw; }
internal FdbSystemStatus(Dictionary <string, object> doc, long readVersion, string raw) : base(doc) { m_client = new ClientStatus(TinyJsonParser.GetMapField(doc, "client")); m_cluster = new ClusterStatus(TinyJsonParser.GetMapField(doc, "cluster")); m_readVersion = readVersion; m_raw = raw; }
internal static LoadCounter From(Dictionary <string, object> data, string field) { var obj = TinyJsonParser.GetMapField(data, field); return(new LoadCounter( (long)(TinyJsonParser.GetNumberField(obj, "counter") ?? 0), TinyJsonParser.GetNumberField(obj, "hz") ?? 0, TinyJsonParser.GetNumberField(obj, "roughness") ?? 0 )); }
internal static Message[] FromArray(Dictionary <string, object?>?data, string field) { var array = TinyJsonParser.GetArrayField(data, field); var res = new Message[array.Count]; for (int i = 0; i < res.Length; i++) { var obj = (Dictionary <string, object?>?)array[i]; (var key, var value) = TinyJsonParser.GetStringPair(obj, "name", "description"); res[i] = new Message(key !, value !); } return(res); }
//TODO: values will vary depending on the "Role" ! public static ProcessRoleMetrics Create(Dictionary <string, object?>?data) { string?role = TinyJsonParser.GetStringField(data, "role"); return(role switch { null => null !, //invalid! "master" => new MasterRoleMetrics(data), "proxy" => new ProxyRoleMetrics(data), "commit_proxy" => new CommitProxyRoleMetrics(data), "grv_proxy" => new GrvProxyRoleMetrics(data), "resolver" => new ResolverRoleMetrics(data), "cluster_controller" => new ClusterControllerRoleMetrics(data), "log" => new LogRoleMetrics(data), "storage" => new StorageRoleMetrics(data), "ratekeeper" => new RateKeeperRoleMetrics(data), "data_distributor" => new DataDistributorRoleMetrics(data), _ => new ProcessRoleMetrics(data, role) });
protected string?GetString(string field1, string field2) { return(TinyJsonParser.GetStringField(TinyJsonParser.GetMapField(m_data, field1), field2)); }
internal static Message From(Dictionary <string, object?>?data, string field) { (var key, var value) = TinyJsonParser.GetStringPair(TinyJsonParser.GetMapField(data, field), "name", "description"); return(new Message(key ?? string.Empty, value ?? string.Empty)); }
protected bool?GetBoolean(string field1, string field2) { return(TinyJsonParser.GetBooleanField(TinyJsonParser.GetMapField(m_data, field1), field2)); }
internal static Message From(Dictionary <string, object> data, string field) { var kvp = TinyJsonParser.GetStringPair(TinyJsonParser.GetMapField(data, field), "name", "description"); return(new Message(kvp.Key ?? String.Empty, kvp.Value ?? String.Empty)); }
protected double?GetDouble(string field1, string field2) { return(TinyJsonParser.GetNumberField(TinyJsonParser.GetMapField(m_data, field1), field2)); }
protected bool?GetBoolean(string field) { return(TinyJsonParser.GetBooleanField(m_data, field)); }
protected double?GetDouble(string field) { return(TinyJsonParser.GetNumberField(m_data, field)); }
protected long?GetInt64(string field1, string field2) { var x = TinyJsonParser.GetNumberField(TinyJsonParser.GetMapField(m_data, field1), field2); return(x.HasValue ? (long?)x.Value : null); }
protected Dictionary <string, object?>?GetMap(string field) { return(TinyJsonParser.GetMapField(m_data, field)); }
protected string?GetString(string field) { return(TinyJsonParser.GetStringField(m_data, field)); }
protected List <object?>?GetArray(string field) { return(TinyJsonParser.GetArrayField(m_data, field)); }