protected override void OnExecute(TerminalCommandContext context) { if(this.Queue.Count < 1) { context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("QueueIsEmpty")); return; } int length; if(context.Options.TryGetValue<int>("length", out length)) context.Result = this.Queue.Peek(length); else { if(context.Arguments.Length > 0 && int.TryParse(context.Arguments[0], out length)) context.Result = this.Queue.Peek(length); else context.Result = this.Queue.Peek(); } if(context.Result != null) { TerminalHelper.WriteObject(context.Terminal, context.Result, 3); //Zongsoft.Runtime.Serialization.Serializer.Text.Serialize(context.Terminal.OutputStream, context.Result); } }
protected override void OnExecute(TerminalCommandContext context) { if(this.Queue.Count < 1) { context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("QueueIsEmpty")); return; } int length; int round = (int)context.Options["round"]; context.Options.TryGetValue<int>("length", out length); if(round > 0) { for(int i = 0; i < round; i++) { context.Result = this.Dequeue(length); if(context.Result != null) TerminalHelper.WriteObject(context.Terminal, context.Result, 3); } } else { while(this.Queue.Count > 0) { context.Result = this.Dequeue(length); if(context.Result != null) TerminalHelper.WriteObject(context.Terminal, context.Result, 3); } } }
protected override void OnExecute(TerminalCommandContext context) { var serviceProvider = this.GetServiceProvider(context.CommandNode); if(serviceProvider == null) throw new CommandException(ResourceUtility.GetString("CannotObtainObject", "ServiceProvider")); var contractText = context.Options["contract"] as string; Type contract = null; if(!string.IsNullOrWhiteSpace(contractText)) { contract = Type.GetType(contractText, false); if(contract == null) throw new CommandOptionValueException("contract", contractText); } if(contract == null) { if(context.Arguments.Length < 1) context.Terminal.WriteLine(TerminalColor.Red, ResourceUtility.GetString("Text.Command.MissingArguments")); context.Result = serviceProvider.Resolve(context.Arguments[0]); } else { context.Result = serviceProvider.Resolve(contract, context.Arguments.Length > 0 ? context.Arguments[0] : null); } if(context.Result != null) context.Terminal.WriteLine(Zongsoft.Runtime.Serialization.Serializer.Text.Serialize(context.Result)); else context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("Text.ServicesGetCommand.NotFoundService")); }
protected override void OnExecute(TerminalCommandContext context) { if(this.Listener is TcpServer) this.DisplayTcpServerInfo((TcpServer)this.Listener, context.Terminal); else if(this.Listener is FtpServer) this.DisplayFtpServerInfo((FtpServer)this.Listener, context.Terminal); else this.DisplayListenerInfo(this.Listener, context.Terminal); }
protected override void OnExecute(TerminalCommandContext context) { if(this.Listener.IsListening) this.Listener.Stop(); if(this.Listener.IsListening) context.Terminal.WriteLine(ResourceUtility.GetString("${CommandExecuteFailed}")); else context.Terminal.WriteLine(ResourceUtility.GetString("${CommandExecuteSucceed}")); }
protected override void OnExecute(TerminalCommandContext context) { var queue = this.Queue; if(queue != null) queue.Clear(); //显示执行成功的信息 context.Terminal.Write(ResourceUtility.GetString("${CommandExecuteSucceed}")); }
protected override void OnExecute(TerminalCommandContext context) { var queue = this.Queue; if(queue != null) { var count = queue.Count; if(count > 0) context.Terminal.WriteLine(TerminalColor.DarkGreen, "The queue length is: {0}", count); else context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("QueueIsEmpty")); } }
protected override void OnExecute(TerminalCommandContext context) { var queue = this.Queue as Queue; if(queue == null) { context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("NotSupportedOperation")); return; } queue.TrimToSize(); //显示执行成功的信息 context.Terminal.Write(ResourceUtility.GetString("CommandExecuteSucceed")); }
protected override void OnExecute(TerminalCommandContext context) { var round = Math.Max(1, (int)context.Options["round"]); for(int i = 0; i < round; i++) { var count = this.ResolveValue(context, (value) => { if(value != null) this.Queue.Enqueue(value); }); context.Terminal.WriteLine(TerminalColor.DarkGreen, "第 {0} 轮入队 {1} 条记录。", i + 1, count); } }
protected override void OnExecute(TerminalCommandContext context) { if(context.Options.Contains("async")) { this.Client.Connected += Client_Connected; this.Client.Failed += Client_Failed; this.Client.ConnectAsync(context); } else { if(this.Client.Connect()) context.Terminal.WriteLine(TerminalColor.DarkGreen, ResourceUtility.GetString("${CommandExecuteSucceed}")); else context.Terminal.WriteLine(TerminalColor.DarkRed, ResourceUtility.GetString("${CommandExecuteFailed}")); } }
protected override void OnExecute(TerminalCommandContext context) { //输出侦听地址。 context.Terminal.Write(TerminalColor.DarkYellow, string.Format("{0}: {1}", ResourceUtility.GetString("${Text.ListenAddress}"), this.Server.Address)); //输出服务器状态。 context.Terminal.Write(TerminalColor.DarkGray, " ["); this.DisplayServerState(context.Terminal, this.Server.ServerState); context.Terminal.Write(TerminalColor.DarkGray, "]"); if(this.Server.ServerState != ServerState.Running) return; //输出运行信息。 context.Terminal.WriteLine(); context.Terminal.WriteLine(TerminalColor.DarkMagenta, this.Server.Scheduler.GetMetaData().GetSummary()); context.Terminal.WriteLine(); }
protected override void OnExecute(TerminalCommandContext context) { if(this.Server.ServerState != ServerState.Stopped) { //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Stopping}")); if(context.Options.Contains("wait")) this.Server.Stop(new []{ "wait" }); else this.Server.Stop(); } //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Stopped}")); context.Terminal.WriteLine(ResourceUtility.GetString("${Text.CommandExecuteSucceed}")); }
protected override void OnExecute(TerminalCommandContext context) { if(this.Server.ServerState != ServerState.Stopped) { context.Terminal.WriteLine(ResourceUtility.GetString("${Text.ServerHasBeenStarted}")); return; } //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Starting}")); this.Server.Start(); //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Started}")); //输出控制台。 context.Terminal.WriteLine(ResourceUtility.GetString("${Text.CommandExecuteSucceed}")); }
protected override void OnExecute(TerminalCommandContext context) { context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${Text.IsConnected}") + ": "); context.Terminal.WriteLine(this.Client.IsConnected(1000) ? ResourceUtility.GetString("${Text.Yes}") : ResourceUtility.GetString("${Text.No}")); context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${RemoteEndPoint}") + ": "); context.Terminal.WriteLine(this.Client.RemoteAddress); context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${LocalEndPoint}") + ": "); context.Terminal.WriteLine(this.Client.LocalAddress); context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${LastConnectTime}") + ": "); context.Terminal.WriteLine(this.Client.Channel.LastConnectTime); context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${LastSendTime}") + ": "); context.Terminal.WriteLine(this.Client.Channel.LastSendTime); context.Terminal.Write(TerminalColor.DarkYellow, ResourceUtility.GetString("${LastReceivedTime}") + ": "); context.Terminal.WriteLine(this.Client.Channel.LastReceivedTime); }
protected override void OnExecute(TerminalCommandContext context) { if(this.Server.ServerState == ServerState.Running) { //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Pausing}")); this.Server.Pause(); } if(this.Server.ServerState == ServerState.Paused) { //输出日志。 this.Logger.Debug(ResourceUtility.GetString("${Log.Server.Paused}")); context.Terminal.WriteLine(ResourceUtility.GetString("${Text.CommandExecuteSucceed}")); } else { context.Terminal.WriteLine(ResourceUtility.GetString("${Text.CommandExecuteFailed}")); } }
protected override void OnExecute(TerminalCommandContext context) { int channelId; if(!context.Options.TryGetValue("channel", out channelId)) return; if(channelId < 0) throw new CommandOptionValueException("channel", channelId.ToString()); var server = this.Listener as TcpServer; if(server == null) { context.Terminal.Error.Write(ResourceUtility.GetString("${Communication.ServerCommand.NotSupportChannel}")); return; } //获取指定编号的通道对象 var channel = server.ChannelManager.GetActivedChannel(channelId); //如果获取指定的通道失败或者获取到的通道为空闲状态,则抛出命令选项值异常 if(channel == null || channel.IsIdled) throw new CommandException(string.Format("Can not obtain the actived channel by '#{0}' channel-id.", channelId)); //设置服务器的活动通道 _channel = channel; //显示命令执行成功信息 context.Terminal.WriteLine(ResourceUtility.GetString("${CommandExecuteSucceed}")); }
protected override void OnExecute(TerminalCommandContext context) { this.Client.Disconnect(); }
private int ResolveValue(TerminalCommandContext context, Action<object> fallback) { int result = 0; switch((ContentType)context.Options["type"]) { case ContentType.BinaryFile: foreach(var arg in context.Arguments) { if(!File.Exists(arg)) { context.Terminal.WriteLine(ResourceUtility.GetString("FileOrDirectoryNotExists", arg)); continue; } fallback(File.ReadAllBytes(arg.ToString())); result++; } break; case ContentType.TextFile: var encoding = (Encoding)context.Options["encoding"]; foreach(var arg in context.Arguments) { string[] filePaths = null; if(arg.Contains("*") || arg.Contains("?")) { var directory = Path.GetDirectoryName(arg); if(!Directory.Exists(directory)) { context.Terminal.WriteLine(ResourceUtility.GetString("FileOrDirectoryNotExists", arg)); continue; } filePaths = Directory.GetFiles(directory, Path.GetFileName(arg)); foreach(var filePath in filePaths) { fallback(File.ReadAllText(filePath, encoding)); } result += filePaths.Length; } else { if(!File.Exists(arg)) { context.Terminal.WriteLine(ResourceUtility.GetString("FileOrDirectoryNotExists", arg)); continue; } fallback(File.ReadAllText(arg.ToString(), encoding)); result++; } } break; case ContentType.String: foreach(var arg in context.Arguments) { fallback(arg); } break; case ContentType.Byte: foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<byte>(arg)); } break; case ContentType.Short: foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<short>(arg)); } break; case ContentType.Integer: foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<int>(arg)); } break; case ContentType.Long: foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<long>(arg)); } break; case ContentType.Date: case ContentType.DateTime: if(context.Arguments.Length < 1) fallback(DateTime.Now); else { foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<DateTime>(arg)); } } break; case ContentType.Guid: if(context.Arguments.Length < 1) fallback(Guid.NewGuid()); else { foreach(var arg in context.Arguments) { fallback(Zongsoft.Common.Convert.ConvertValue<Guid>(arg)); } } break; default: return 0; } return Math.Max(1, result); }