/// <summary> /// 实例化RemoteProxy /// </summary> /// <param name="node"></param> /// <param name="logger"></param> public RemoteProxy(ServerNode node, ILog logger) { this.node = node; this.logger = logger; InitRequest(); }
public TracExplorerControl() { InitializeComponent(); // Set handlers doubleClickHandlers.Add(typeof(WikiPageNode), WikiPageDoubleClick); doubleClickHandlers.Add(typeof(TicketNode), TicketDoubleClick); CommonRoot servers = CommonRoot.Instance; treeTrac.BeginUpdate(); foreach (ServerDetails server in servers.Servers) { ServerNode nodeServer = new ServerNode(server); treeTrac.Nodes["nodeServers"].Nodes.Add(nodeServer); } treeTrac.Nodes["nodeServers"].Expand(); treeTrac.EndUpdate(); // captions btnDelTracServer.Text = btnDelTracServer.ToolTipText = btnServerDelete.Text = Properties.Resources.MenuDelete; btnNewTracServer.Text = btnNewTracServer.ToolTipText = btnNewServer.Text = Properties.Resources.MenuNewServer; btnServerRefresh.Text = btnServerRefresh.ToolTipText = Properties.Resources.MenuRefresh; }
public ServerListWindow(MainWindow parent) : base(Gtk.WindowType.Toplevel) { TransientFor = parent; this.Build(); this.connectButton.TooltipMarkup = Catalog.GetString("Connects to the selected server"); this.addServerButton.TooltipMarkup = Catalog.GetString("Adds new server entry to the list"); this.removeServerButton.TooltipMarkup = Catalog.GetString("Removes the selected entry from the list"); serverStore = new Gtk.NodeStore(typeof(ServerNode)); serverNodes = new List<ServerNode>(); List<string> addresses = Config.Instance.GetStringList("ServerList.Addresses"); List<int> ports = Config.Instance.GetIntegerList("ServerList.Ports"); int count = Math.Min(addresses.Count, ports.Count); for(int i = 0; i < count; i++) { ServerNode node = new ServerNode(addresses[i], ports[i]); serverStore.AddNode(node); serverNodes.Add(node); } serverList.NodeStore = serverStore; Gtk.CellRendererText addressRenderer = new Gtk.CellRendererText(); addressRenderer.Editable = true; addressRenderer.Edited += OnAddressEdited; Gtk.CellRendererText portRenderer = new Gtk.CellRendererText(); portRenderer.Editable = true; portRenderer.Edited += OnPortEdited; serverList.AppendColumn(Catalog.GetString("Address"), addressRenderer, "text", 0); serverList.AppendColumn(Catalog.GetString("Port"), portRenderer, "text", 1); serverList.ShowExpanders = false; serverList.NodeSelection.Changed += OnServerSelectionChanged; }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/certificates"; var request = new HttpRequestMessage { Method = HttpMethod.Post }; request.Content = new BlittableJsonContent(stream => { using (var writer = new BlittableJsonTextWriter(ctx, stream)) { writer.WriteStartObject(); writer.WritePropertyName(nameof(CertificateDefinition.Name)); writer.WriteString(_name.ToString()); writer.WriteComma(); writer.WritePropertyName(nameof(SecurityClearance)); writer.WriteString(_clearance.ToString()); writer.WriteComma(); if (_password != null) { writer.WritePropertyName(nameof(CertificateDefinition.Password)); writer.WriteString(_password.ToString()); writer.WriteComma(); } writer.WritePropertyName(nameof(CertificateDefinition.Permissions)); writer.WriteStartObject(); bool first = true; foreach (var kvp in _permissions) { if (first == false) { writer.WriteComma(); } first = false; writer.WriteString(kvp.Key); writer.WriteComma(); writer.WriteString(kvp.Value == DatabaseAccess.ReadWrite ? nameof(DatabaseAccess.ReadWrite) : nameof(DatabaseAccess.Admin)); } writer.WriteEndObject(); writer.WriteEndObject(); } }); return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/indexes/terms?name={Uri.EscapeDataString(_indexName)}&field={Uri.EscapeDataString(_field)}&fromValue={_fromValue}&pageSize={_pageSize}"; return new HttpRequestMessage { Method = HttpMethod.Get }; }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { var pathBuilder = new StringBuilder(node.Url); pathBuilder.Append("/databases/") .Append(node.Database) .Append("/counters?") .Append("docId=") .Append(Uri.EscapeDataString(_docId)); if (_returnFullResults) pathBuilder.Append("&full=").Append(true); var request = new HttpRequestMessage { Method = HttpMethod.Get }; if (_counters.Length > 0) { if (_counters.Length > 1) { PrepareRequestWithMultipleCounters(pathBuilder, request, ctx); } else { pathBuilder.Append("&counter=").Append(Uri.EscapeDataString(_counters[0])); } } url = pathBuilder.ToString(); return request; }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { var pathBuilder = new StringBuilder(node.Url); pathBuilder.Append("/databases/") .Append(node.Database) .Append("/timeseries") .Append("?docId=") .Append(Uri.EscapeDataString(_docId)); if (_start > 0) { pathBuilder.Append("&start=") .Append(_start); } if (_pageSize < int.MaxValue) { pathBuilder.Append("&pageSize=") .Append(_pageSize); } pathBuilder.Append("&name=") .Append(Uri.EscapeDataString(_name)); if (_from.HasValue) { pathBuilder.Append("&from=") .Append(_from.Value.EnsureUtc().GetDefaultRavenFormat()); } if (_to.HasValue) { pathBuilder.Append("&to=") .Append(_to.Value.EnsureUtc().GetDefaultRavenFormat()); } if (_includes != null) { AddIncludesToRequest(pathBuilder, _includes); } if (_returnFullResults) { pathBuilder.Append("&full=").Append(true); } url = pathBuilder.ToString(); var request = new HttpRequestMessage { Method = HttpMethod.Get }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/admin/tasks/state?key={_taskId}&type={_type}&disable={_disable}"; if (_taskName != null) { url += $"&taskName={Uri.EscapeDataString(_taskName)}"; } var request = new HttpRequestMessage { Method = HttpMethod.Post }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/logs/configuration"; return(new HttpRequestMessage(HttpMethod.Post, url) { Content = new BlittableJsonContent(async stream => await ctx.WriteAsync(stream, DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(_parameters, ctx)).ConfigureAwait(false)) }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/admin/periodic-backup"; var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { var config = EntityToBlittable.ConvertCommandToBlittable(_configuration, ctx); ctx.Write(stream, config); }) }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/indexes/set-priority"; return(new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { ctx.Write(stream, _parameters); }) }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/bulk_insert?id={_id}"; var message = new HttpRequestMessage { Method = HttpMethod.Post, Content = _stream, Headers = { TransferEncodingChunked = true } }; return(message); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/timeseries/stats?docId={Uri.EscapeDataString(_documentId)}"; return(new HttpRequestMessage { Method = HttpMethod.Get }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}{_url}"; var request = new HttpRequestMessage { Method = _method, Content = new BlittableJsonContent(stream => { if (_payload != null) { ctx.Write(stream, _payload); } }) }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { _baseUrl = $"{node.Url}/databases/{node.Database}"; var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { using (var writer = new BlittableJsonTextWriter(ctx, stream)) { writer.WriteStartObject(); var first = true; writer.WritePropertyName("Requests"); writer.WriteStartArray(); foreach (var command in _commands) { if (first == false) { writer.WriteComma(); } first = false; var cacheKey = GetCacheKey(command, out string _); using (_cache.Get(ctx, cacheKey, out string cachedChangeVector, out var _)) { var headers = new DynamicJsonValue(); if (cachedChangeVector != null) { headers["If-None-Match"] = $"\"{cachedChangeVector}\""; } foreach (var header in command.Headers) { headers[header.Key] = header.Value; } writer.WriteStartObject(); writer.WritePropertyName(nameof(GetRequest.Url)); writer.WriteString($"/databases/{node.Database}{command.Url}"); writer.WriteComma(); writer.WritePropertyName(nameof(GetRequest.Query)); writer.WriteString(command.Query); writer.WriteComma(); writer.WritePropertyName(nameof(GetRequest.Method)); writer.WriteString(command.Method?.Method); writer.WriteComma(); writer.WritePropertyName(nameof(GetRequest.Headers)); writer.WriteStartObject(); var firstInner = true; foreach (var kvp in command.Headers) { if (firstInner == false) { writer.WriteComma(); } firstInner = false; writer.WritePropertyName(kvp.Key); writer.WriteString(kvp.Value); } writer.WriteEndObject(); writer.WriteComma(); writer.WritePropertyName(nameof(GetRequest.Content)); if (command.Content != null) { command.Content.WriteContent(writer, ctx); } else { writer.WriteNull(); } writer.WriteEndObject(); } } writer.WriteEndArray(); writer.WriteEndObject(); } }) }; url = $"{_baseUrl}/multi_get"; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { var path = new StringBuilder(node.Url) .Append("/databases/") .Append(node.Database) .Append("/queries") .Append("?allowStale=") .Append(_options.AllowStale) .Append("&maxOpsPerSec=") .Append(_options.MaxOpsPerSecond) .Append("&details=") .Append(_options.RetrieveDetails); if (_options.StaleTimeout != null) { path .Append("&staleTimeout=") .Append(_options.StaleTimeout.Value); } var request = new HttpRequestMessage { Method = HttpMethod.Delete, Content = new BlittableJsonContent(stream => { using (var writer = new BlittableJsonTextWriter(ctx, stream)) { writer.WriteIndexQuery(_conventions, ctx, _queryToDelete); } } ) }; url = path.ToString(); return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/cluster/node-info"; return(new HttpRequestMessage { Method = HttpMethod.Get }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/migrate/offline"; return(new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { var config = DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(_configuration, ctx); ctx.Write(stream, config); }) }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/admin/tasks/pull-replication/hub"; var request = new HttpRequestMessage { Method = HttpMethod.Put, Content = new BlittableJsonContent(stream => { ctx.Write(stream, ctx.ReadObject(_pullReplicationDefinition.ToJson(), "update-pull-replication-definition")); }) }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/configuration/studio"; return(new HttpRequestMessage { Method = HttpMethod.Put, Content = new BlittableJsonContent(stream => { ctx.Write(stream, _configuration); }) }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/cmpxchg?key={_key}&index={_index}"; //var tuple = ("Object", _value); var tuple = new Dictionary <string, T> { ["Object"] = _value }; var blit = EntityToBlittable.ConvertEntityToBlittable(tuple, _conventions, ctx); var request = new HttpRequestMessage { Method = HttpMethods.Put, Content = new BlittableJsonContent(stream => { ctx.Write(stream, blit); }) }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/configuration/studio"; var request = new HttpRequestMessage { Method = HttpMethod.Get }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/databases/node?name={_databaseName}"; if (string.IsNullOrEmpty(_node) == false) { url += $"&node={_node}"; } var request = new HttpRequestMessage { Method = HttpMethod.Put }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/cmpxchg?key={Uri.EscapeDataString(_key)}&index={_index}"; var request = new HttpRequestMessage { Method = HttpMethods.Delete, }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/indexes/set-lock?name={Uri.EscapeDataString(_indexName)}&mode={_mode}"; return(new HttpRequestMessage { Method = HttpMethod.Post }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { var path = new StringBuilder(node.Url).Append("/admin/certificates?metadataOnly=true"); if (string.IsNullOrEmpty(_name) == false) { path.Append("&name=").Append(Uri.EscapeDataString(_name)); } url = path.ToString(); var request = new HttpRequestMessage { Method = HttpMethod.Get }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/databases?name={node.Database}"; return(new HttpRequestMessage { Method = HttpMethod.Get, }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/admin/etl?id={_taskId}"; var request = new HttpRequestMessage { Method = HttpMethod.Put, Content = new BlittableJsonContent(stream => { var config = DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(_configuration, ctx); ctx.Write(stream, config); }) }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{_databaseName}/admin/tasks/external-replication"; var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { var json = new DynamicJsonValue { ["Watcher"] = _newWatcher.ToJson() }; ctx.Write(stream, ctx.ReadObject(json, "update-replication")); }) }; return(request); }
/// <summary> /// 调用服务 /// </summary> /// <param name="reqMsg"></param> /// <returns></returns> public ResponseMessage CallService(RequestMessage reqMsg) { IList<IService> proxies = new List<IService>(); //判断是否为StatusService服务 if (reqMsg.ServiceName == typeof(IStatusService).FullName) { throw new WarningException("Status service can't use discover service way!"); } //如果能找到服务 if (services.ContainsKey(reqMsg.ServiceName)) { proxies = services[reqMsg.ServiceName]; } else { //找到代理服务 lock (services) { //代理数为1时,直接处理 if (factory.Proxies.Count == 1) { proxies.Add(factory.Proxies[0]); services[reqMsg.ServiceName] = proxies; } else { foreach (var proxy in factory.Proxies) { try { //自定义实现一个ServerNode var node = new ServerNode { IP = proxy.Node.IP, Port = proxy.Node.Port, Compress = proxy.Node.Compress, Encrypt = proxy.Node.Encrypt, Key = Guid.NewGuid().ToString(), MaxPool = 1, Timeout = 30 }; var service = factory.GetChannel<IStatusService>(node); //检测是否存在服务 if (service.ContainsService(reqMsg.ServiceName)) { proxies.Add(proxy); } } catch (WarningException ex) { throw ex; } } } //缓存代理服务 if (proxies.Count > 0) services[reqMsg.ServiceName] = proxies; else throw new WarningException(string.Format("Did not find the proxy service {0}!", reqMsg.ServiceName)); } } //随机获取一个代理,实现分布式处理 var rndIndex = new Random(Guid.NewGuid().GetHashCode()).Next(proxies.Count); return proxies[rndIndex].CallService(reqMsg); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/databases/{node.Database}/admin/sorters"; var request = new HttpRequestMessage { Method = HttpMethod.Put, Content = new BlittableJsonContent(async stream => { await using (var writer = new AsyncBlittableJsonTextWriter(ctx, stream)) { writer.WriteStartObject(); writer.WriteArray("Sorters", _sortersToAdd); writer.WriteEndObject(); } }) }; return(request); }
public CallbackProxy(object callback, ServerNode node, ILog logger) : base(node, logger) { this.callback = callback; }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/replication/conflicts/solver?name={_databaseName}"; var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(async stream => { var solver = DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(new ConflictSolver { ResolveByCollection = _solver.CollectionByScript, ResolveToLatest = _solver.ResolveToLatest, }, ctx); await ctx.WriteAsync(stream, solver).ConfigureAwait(false); }) }; return(request); }
protected void OnAddServerButtonClicked(object sender, System.EventArgs e) { ServerNode node = new ServerNode("", 0); serverStore.AddNode(node); serverNodes.Add(node); List<string> addresses = Config.Instance.GetStringList("ServerList.Addresses"); List<int> ports = Config.Instance.GetIntegerList("ServerList.Ports"); addresses.Add(node.Address); ports.Add(node.Port); Config.Instance.SetStringList("ServerList.Addresses", addresses); Config.Instance.SetIntegerList("ServerList.Ports", ports); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/databases/promote?name={_databaseName}&node={_node}"; var request = new HttpRequestMessage { Method = HttpMethod.Post }; return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { url = $"{node.Url}/admin/databases/unused-ids?name={_database}"; return(new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { ctx.Write(stream, DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(_parameters, ctx)); }) }); }
/// <summary> /// 从配置文件加载配置值 /// </summary> /// <param name="xmlnode"></param> public void LoadValuesFromConfigurationXml(XmlNode xmlnode) { if (xmlnode == null) return; XmlAttributeCollection attribute = xmlnode.Attributes; if (attribute["type"] != null && attribute["type"].Value.Trim() != string.Empty) type = (CastleFactoryType)Enum.Parse(typeof(CastleFactoryType), attribute["type"].Value, true); if (attribute["throwError"] != null && attribute["throwError"].Value.Trim() != string.Empty) throwError = Convert.ToBoolean(attribute["throwError"].Value); if (attribute["default"] != null && attribute["default"].Value.Trim() != string.Empty) defaultKey = attribute["default"].Value; if (attribute["appname"] != null && attribute["appname"].Value.Trim() != string.Empty) appname = attribute["appname"].Value; foreach (XmlNode child in xmlnode.ChildNodes) { if (child.NodeType == XmlNodeType.Comment) continue; XmlAttributeCollection childattribute = child.Attributes; if (child.Name == "serverNode") { var node = new ServerNode(); node.Key = childattribute["key"].Value; node.IP = childattribute["ip"].Value; node.Port = Convert.ToInt32(childattribute["port"].Value); //超时时间,默认为1分钟 if (childattribute["timeout"] != null && childattribute["timeout"].Value.Trim() != string.Empty) node.Timeout = Convert.ToInt32(childattribute["timeout"].Value); //最大连接池 if (childattribute["maxpool"] != null && childattribute["maxpool"].Value.Trim() != string.Empty) node.MaxPool = Convert.ToInt32(childattribute["maxpool"].Value); //最小连接池 if (childattribute["minpool"] != null && childattribute["minpool"].Value.Trim() != string.Empty) node.MinPool = Convert.ToInt32(childattribute["minpool"].Value); if (childattribute["encrypt"] != null && childattribute["encrypt"].Value.Trim() != string.Empty) node.Encrypt = Convert.ToBoolean(childattribute["encrypt"].Value); if (childattribute["compress"] != null && childattribute["compress"].Value.Trim() != string.Empty) node.Compress = Convert.ToBoolean(childattribute["compress"].Value); if (childattribute["format"] != null && childattribute["format"].Value.Trim() != string.Empty) node.Format = (TransferType)Enum.Parse(typeof(TransferType), childattribute["format"].Value, true); //处理默认的服务 if (string.IsNullOrEmpty(defaultKey)) { defaultKey = node.Key; } if (nodes.ContainsKey(node.Key)) throw new WarningException("Already exists server node 【" + node.Key + "】."); nodes[node.Key] = node; } } if (type != CastleFactoryType.Local) { //如果app名称为空 if (string.IsNullOrEmpty(appname)) { throw new WarningException("App name must be provided!"); } //判断是否配置了服务信息 if (nodes.Count == 0) { throw new WarningException("Not configure any service node!"); } //判断是否包含默认的服务 if (!nodes.ContainsKey(defaultKey)) { throw new WarningException("Not find the default service node 【" + defaultKey + "】!"); } } }
/// <summary> /// Invoke 代理 /// </summary> /// <param name="node"></param> /// <param name="logger"></param> public InvokeProxy(ServerNode node, ILog logger) : base(node, logger) { //TO DO }