本文整理汇总了C#中GSF.ServiceProcess.ClientRequestInfo类的典型用法代码示例。如果您正苦于以下问题:C# ClientRequestInfo类的具体用法?C# ClientRequestInfo怎么用?C# ClientRequestInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ClientRequestInfo类属于GSF.ServiceProcess命名空间,在下文中一共展示了ClientRequestInfo类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ShowSettings
private void ShowSettings(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a list of service settings from the config file.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Settings -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
StringBuilder responseMessage = new StringBuilder();
responseMessage.AppendFormat("Settings for {0}:", Name);
responseMessage.AppendLine();
responseMessage.AppendLine();
responseMessage.Append("Category".PadRight(20));
responseMessage.Append(' ');
responseMessage.Append("Name".PadRight(25));
responseMessage.Append(' ');
responseMessage.Append("Value".PadRight(30));
responseMessage.AppendLine();
responseMessage.Append(new string('-', 20));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 25));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 30));
IPersistSettings typedComponent;
lock (m_serviceComponents)
{
foreach (object component in m_serviceComponents)
{
typedComponent = component as IPersistSettings;
if ((object)typedComponent == null)
continue;
foreach (CategorizedSettingsElement setting in ConfigurationFile.Current.Settings[typedComponent.SettingsCategory].Cast<CategorizedSettingsElement>().Where(setting => !setting.Encrypted))
{
responseMessage.AppendLine();
responseMessage.Append(typedComponent.SettingsCategory.PadRight(20));
responseMessage.Append(' ');
responseMessage.Append(setting.Name.PadRight(25));
responseMessage.Append(' ');
if (!string.IsNullOrEmpty(setting.Value))
responseMessage.Append(setting.Value.PadRight(30));
else
responseMessage.Append("[Not Set]".PadRight(30));
}
}
}
responseMessage.AppendLine();
responseMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, responseMessage.ToString());
}
}
示例2: SendResponse
/// <summary>
/// Sends an actionable response to client.
/// </summary>
/// <param name="requestInfo"><see cref="ClientRequestInfo"/> instance containing the client request.</param>
/// <param name="success">Flag that determines if this response to client request was a success.</param>
protected virtual void SendResponse(ClientRequestInfo requestInfo, bool success)
{
SendResponseWithAttachment(requestInfo, success, null, null);
}
示例3: MsgServiceMonitorsRequestHandler
// Send a message to the service monitors on request
private void MsgServiceMonitorsRequestHandler(ClientRequestInfo requestInfo)
{
Arguments arguments = requestInfo.Request.Arguments;
if (arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Sends a message to all service monitors.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" MsgServiceMonitors [Options] [Args...]");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
DisplayResponseMessage(requestInfo, helpMessage.ToString());
}
else
{
string[] args = Enumerable.Range(1, arguments.OrderedArgCount)
.Select(arg => arguments[arguments.OrderedArgID + arg])
.ToArray();
// Go through all service monitors and handle the message
foreach (IServiceMonitor serviceMonitor in m_serviceMonitors.Adapters)
{
try
{
// If the service monitor is enabled, notify it of the message
if (serviceMonitor.Enabled)
serviceMonitor.HandleClientMessage(args);
}
catch (Exception ex)
{
// Handle each service monitor's exceptions individually
HandleException(ex);
}
}
SendResponse(requestInfo, true);
}
}
示例4: ShowTime
private void ShowTime(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Shows the current system time.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Time -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.Append(" -actionable".PadRight(20));
helpMessage.Append("Returns results via an actionable event");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
string message;
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
// Current system time: yyyy-MM-dd HH:mm:ss.fff, yyyy-MM-dd HH:mm:ss.fff UTC
// Total system runtime: xx days yy hours zz minutes ii seconds
if ((object)m_remotingServer != null)
message = $" Current system time: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}, {DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff")} UTC\r\nTotal system runtime: {m_remotingServer.RunTime.ToString(3)}";
else
message = $"Current system time: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}, {DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff")} UTC";
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, message + "\r\n\r\n");
// Also allow consumers to directly consume message via event in response to a time request
if (requestInfo.Request.Arguments.Exists("actionable"))
SendActionableResponse(requestInfo, true, null, message);
}
}
示例5: RemoteTelnetSession
private void RemoteTelnetSession(ClientRequestInfo requestinfo)
{
if ((object)m_remoteCommandProcess == null && requestinfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Allows for a telnet session to the service server.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Telnet -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.Append(" -connect".PadRight(20));
helpMessage.Append("Establishes a telnet session (requires password)");
helpMessage.AppendLine();
helpMessage.Append(" -disconnect".PadRight(20));
helpMessage.Append("Terminates established telnet session");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestinfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
bool connectSession = requestinfo.Request.Arguments.Exists("connect");
bool disconnectSession = requestinfo.Request.Arguments.Exists("disconnect");
if ((object)m_remoteCommandProcess == null && connectSession && !string.IsNullOrEmpty(requestinfo.Request.Arguments["connect"]))
{
// User wants to establish a remote command session.
string password = requestinfo.Request.Arguments["connect"];
if (password == m_telnetSessionPassword)
{
// Establish remote command session
m_remoteCommandProcess = new Process();
m_remoteCommandProcess.ErrorDataReceived += RemoteCommandProcess_ErrorDataReceived;
m_remoteCommandProcess.OutputDataReceived += RemoteCommandProcess_OutputDataReceived;
m_remoteCommandProcess.StartInfo.FileName = "cmd.exe";
m_remoteCommandProcess.StartInfo.UseShellExecute = false;
m_remoteCommandProcess.StartInfo.RedirectStandardInput = true;
m_remoteCommandProcess.StartInfo.RedirectStandardOutput = true;
m_remoteCommandProcess.StartInfo.RedirectStandardError = true;
m_remoteCommandProcess.Start();
m_remoteCommandProcess.BeginOutputReadLine();
m_remoteCommandProcess.BeginErrorReadLine();
UpdateStatus(UpdateType.Information, "Remote command session established - status updates are suspended.\r\n\r\n");
m_remoteCommandClientID = requestinfo.Sender.ClientID;
SendResponse(requestinfo.Sender.ClientID, new ServiceResponse("TelnetSession", "Established"));
}
else
{
UpdateStatus(requestinfo.Sender.ClientID, UpdateType.Alarm, "Failed to establish remote command session - Password is invalid.\r\n\r\n");
}
}
else if (string.Compare(requestinfo.Request.Command, "Telnet", StringComparison.OrdinalIgnoreCase) == 0 && (object)m_remoteCommandProcess != null && disconnectSession)
{
// User wants to terminate an established remote command session.
m_remoteCommandProcess.ErrorDataReceived -= RemoteCommandProcess_ErrorDataReceived;
m_remoteCommandProcess.OutputDataReceived -= RemoteCommandProcess_OutputDataReceived;
if (!m_remoteCommandProcess.HasExited)
m_remoteCommandProcess.Kill();
m_remoteCommandProcess.Dispose();
m_remoteCommandProcess = null;
m_remoteCommandClientID = Guid.Empty;
SendResponse(requestinfo.Sender.ClientID, new ServiceResponse("TelnetSession", "Terminated"));
UpdateStatus(UpdateType.Information, "Remote command session terminated - status updates are resumed.\r\n\r\n");
}
else if ((object)m_remoteCommandProcess != null)
{
// User has entered commands that must be redirected to the established command session.
string input = requestinfo.Request.Command + " " + requestinfo.Request.Arguments;
m_remoteCommandProcess.StandardInput.WriteLine(input);
}
else
{
// User has provided insufficient information.
requestinfo.Request = ClientRequest.Parse("Telnet /?");
RemoteTelnetSession(requestinfo);
}
}
}
示例6: UpdateClientFilter
private void UpdateClientFilter(ClientRequestInfo requestInfo)
{
const int HighPriority = 2;
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Filters status messages coming from the service.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Filter [ { -List |");
helpMessage.AppendLine();
helpMessage.Append(" -Include <FilterDefinition> |");
helpMessage.AppendLine();
helpMessage.Append(" -Exclude <FilterDefinition> |");
helpMessage.AppendLine();
helpMessage.Append(" -Remove <ID> } ... ]");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Filter -?");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" FilterDefinition ::= Type { Alarm | Warning | Information } |");
helpMessage.AppendLine();
helpMessage.Append(" Message <FilterSpec> |");
helpMessage.AppendLine();
helpMessage.Append(" Regex <FilterSpec>");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -List".PadRight(20));
helpMessage.Append("Displays a list of the client's active filters");
helpMessage.AppendLine();
helpMessage.Append(" -Include".PadRight(20));
helpMessage.Append("Defines a filter matching messages to be displayed");
helpMessage.AppendLine();
helpMessage.Append(" -Exclude".PadRight(20));
helpMessage.Append("Defines a filter matching messages to be suppressed");
helpMessage.AppendLine();
helpMessage.Append(" -Remove".PadRight(20));
helpMessage.Append("Removes a filter");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "{0}", helpMessage.ToString());
return;
}
string[] args = Arguments.ToArgs(requestInfo.Request.Arguments.ToString());
ClientFilter mergeFilter = new ClientFilter();
List<int> removalIDs = new List<int>();
bool argsContainsList = !args.Any();
int i = 0;
while (i < args.Length)
{
if (args[i].Equals("-List", StringComparison.OrdinalIgnoreCase))
{
// Set the boolean flag indicating that
// the client requested a list of filters
argsContainsList = true;
i++;
}
else if (args[i].Equals("-Remove", StringComparison.OrdinalIgnoreCase))
{
int filterID;
// Check for parsing errors with the number of arguments
if (i + 1 >= args.Length)
throw new FormatException("Malformed expression - Missing ID argument in 'Filter -Remove <ID>' command. Type 'Filter -?' to get help with this command.");
// Check for parsing errors in the filter ID
if (!int.TryParse(args[i + 1], out filterID))
throw new FormatException("Malformed expression - ID argument supplied to 'Filter -Remove <ID>' must be an integer. Type 'Filter -?' to get help with this command.");
// Add the ID to the list of filter IDs to be removed from the client's filter
if (i + 1 < args.Length && int.TryParse(args[i + 1], out filterID))
removalIDs.Add(filterID);
i += 2;
}
else if (args[i].Equals("-Include", StringComparison.OrdinalIgnoreCase))
{
string filterType;
string filterSpec;
UpdateType updateType;
// Validate the number of arguments
// associated with the filter
if (i + 2 >= args.Length)
//.........这里部分代码省略.........
示例7: TransferFile
private void TransferFile(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest || requestInfo.Request.Arguments.OrderedArgCount < 2)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Transfers files to and from the server.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Transfer \"Source File Path\" \"Target File Path\" -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.Append(" -upload".PadRight(20));
helpMessage.Append("Uploads file from local machine to server");
helpMessage.AppendLine();
helpMessage.Append(" -download".PadRight(20));
helpMessage.Append("Downloads file from server to local machine");
helpMessage.AppendLine();
helpMessage.Append(" -overwrite".PadRight(20));
helpMessage.Append("Overwrites file if one exists in the target location");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
string source = requestInfo.Request.Arguments["orderedarg1"];
string target = requestInfo.Request.Arguments["orderedarg2"];
bool upload = requestInfo.Request.Arguments.Exists("upload");
bool download = requestInfo.Request.Arguments.Exists("download");
bool overwrite = requestInfo.Request.Arguments.Exists("overwrite");
if (upload)
{
// Request is for uploading a file.
if (requestInfo.Request.Attachments.Count == 1)
{
// File content is present.
target = FilePath.GetAbsolutePath(target);
if (!File.Exists(target) || overwrite)
{
// Save the received file.
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "Saving file '{0}'...\r\n\r\n", target);
File.WriteAllBytes(target, (byte[])requestInfo.Request.Attachments[0]);
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "File '{0}' saved successfully.\r\n\r\n", target);
}
else
{
// File exists and cannot be overwritten.
UpdateStatus(UpdateType.Alarm, "File '{0}' already exists.\r\n\r\n", target);
}
}
else
{
// File content is not present.
UpdateStatus(UpdateType.Alarm, "Content for file '{0}' is missing.\r\n\r\n", target);
}
}
else if (download)
{
// Request is for uploading a file.
source = FilePath.GetAbsolutePath(source);
if (File.Exists(source))
{
// Send file to client.
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "Sending file '{0}'...\r\n\r\n", source);
SendActionableResponse(requestInfo, true, File.ReadAllBytes(source));
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "File '{0}' sent successfully.\r\n\r\n", source);
}
else
{
// File does not exist.
UpdateStatus(UpdateType.Alarm, "File '{0}' does not exist.\r\n\r\n", source);
}
}
else
{
// Invalid command option specified.
UpdateStatus(UpdateType.Alarm, "Command option is not valid.\r\n\r\n");
}
}
}
示例8: ResetHealthMonitor
private void ResetHealthMonitor(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Resets the system resource utilization monitor.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" ResetHealthMonitor -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
try
{
// Dispose existing performance monitor
if ((object)m_performanceMonitor != null)
m_performanceMonitor.Dispose();
// Recreate the performance monitor
m_performanceMonitor = new PerformanceMonitor(m_healthMonitorInterval * 1000.0D);
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "System health monitor successfully reset.\r\n\r\n");
}
catch (Exception ex)
{
LogException(ex);
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Alarm, "Failed to reset system health monitor: {0}\r\n\r\n", ex.Message);
}
}
}
示例9: ListFilters
public void ListFilters(ClientRequestInfo requestInfo)
{
m_thread.Push(HighPriority, () =>
{
StringBuilder messageBuilder = new StringBuilder();
StringBuilder commandBuilder = new StringBuilder();
int i = 0;
commandBuilder.Append("Filter");
// List type inclusion filters
if (m_filter.TypeInclusionFilters.Any())
{
messageBuilder.AppendLine("Type Inclusion Filters:");
foreach (UpdateType filter in m_filter.TypeInclusionFilters)
{
messageBuilder.AppendLine($"[{i++}] {filter}");
commandBuilder.Append($" -Include Type {Arguments.Escape(filter.ToString())}");
}
}
// List type exclusion filters
if (m_filter.TypeExclusionFilters.Any())
{
if (messageBuilder.Length > 0)
messageBuilder.AppendLine();
messageBuilder.AppendLine("Type Exclusion Filters:");
foreach (UpdateType filter in m_filter.TypeExclusionFilters)
{
messageBuilder.AppendLine($"[{i++}] {filter}");
commandBuilder.Append($" -Exclude Type {Arguments.Escape(filter.ToString())}");
}
}
// List pattern exclusion filters
if (m_filter.PatternInclusionFilters.Any())
{
if (messageBuilder.Length > 0)
messageBuilder.AppendLine();
messageBuilder.AppendLine("Pattern Inclusion Filters:");
foreach (string filter in m_filter.PatternInclusionFilters)
{
messageBuilder.AppendLine($"[{i++}] {filter}");
commandBuilder.Append($" -Include Regex {Arguments.Escape(filter)}");
}
}
// List pattern exclusion filters
if (m_filter.PatternExclusionFilters.Any())
{
if (messageBuilder.Length > 0)
messageBuilder.AppendLine();
messageBuilder.AppendLine("Pattern Exclusion Filters:");
foreach (string filter in m_filter.PatternExclusionFilters)
{
messageBuilder.AppendLine($"[{i++}] {filter}");
commandBuilder.Append($" -Exclude Regex {Arguments.Escape(filter)}");
}
}
// Display a message if no filters are defined
if (messageBuilder.Length == 0)
{
messageBuilder.AppendLine("No filters defined.");
}
else
{
string command = commandBuilder.ToString();
string argument = Arguments.Escape(command);
string url = HttpUtility.UrlEncode(command);
messageBuilder.AppendLine();
messageBuilder.AppendLine("Command:");
messageBuilder.AppendLine(command);
messageBuilder.AppendLine();
messageBuilder.AppendLine("Argument:");
messageBuilder.AppendLine(argument);
messageBuilder.AppendLine();
messageBuilder.AppendLine("URL:");
messageBuilder.AppendLine(url);
}
// Send the message to the client
m_serviceHelper.SendActionableResponse(requestInfo, true, null, messageBuilder.ToString().TrimEnd());
});
}
示例10: ShowRequestHelp
private void ShowRequestHelp(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a list of commands supported by the service.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Help -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
bool showAdvancedHelp = requestInfo.Request.Arguments.Exists("advanced");
StringBuilder responseMessage = new StringBuilder();
responseMessage.AppendFormat("Commands supported by {0}:", Name);
responseMessage.AppendLine();
responseMessage.AppendLine();
responseMessage.Append("Command".PadRight(20));
responseMessage.Append(' ');
responseMessage.Append("Description".PadRight(55));
responseMessage.AppendLine();
responseMessage.Append(new string('-', 20));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 55));
lock (m_clientRequestHandlers)
{
foreach (ClientRequestHandler handler in m_clientRequestHandlers)
{
if (m_secureRemoteInteractions && SecurityProviderUtility.IsResourceSecurable(handler.Command) && !SecurityProviderUtility.IsResourceAccessible(handler.Command))
continue;
if (!handler.IsAdvertised && !showAdvancedHelp)
continue;
responseMessage.AppendLine();
responseMessage.Append(handler.Command.PadRight(20));
responseMessage.Append(' ');
responseMessage.Append(handler.CommandDescription.PadRight(55));
}
}
responseMessage.AppendLine();
responseMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, responseMessage.ToString());
}
}
示例11: ShowHealthReport
private void ShowHealthReport(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a resource utilization report for the service.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Health -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.Append(" -lifetime".PadRight(20));
helpMessage.Append("Shows utilization over entire service lifetime");
helpMessage.AppendLine();
helpMessage.Append(" -actionable".PadRight(20));
helpMessage.Append("Returns results via an actionable event");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
string message;
bool success;
if ((object)m_performanceMonitor != null)
{
try
{
if (requestInfo.Request.Arguments.Exists("lifetime"))
message = m_performanceMonitor.LifetimeStatus;
else
message = m_performanceMonitor.Status;
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "\r\n" + message + "\r\n");
success = true;
}
catch (Exception ex)
{
LogException(ex);
message = "Failed to query system health monitor status: " + ex.Message;
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Alarm, message + "\r\n\r\n");
success = false;
}
}
else
{
message = "System health monitor is unavailable.";
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Warning, message + "\r\n\r\n");
success = false;
}
// Also allow consumers to directly consume message via event in response to a health request
if (requestInfo.Request.Arguments.Exists("actionable"))
SendActionableResponse(requestInfo, success, null, message);
}
}
示例12: ShowRequestHistory
private void ShowRequestHistory(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a list of recent requests received from the clients.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" History -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
StringBuilder responseMessage = new StringBuilder();
responseMessage.AppendFormat("History of requests received by {0}:", Name);
responseMessage.AppendLine();
responseMessage.AppendLine();
responseMessage.Append("Command".PadRight(20));
responseMessage.Append(' ');
responseMessage.Append("Received".PadRight(25));
responseMessage.Append(' ');
responseMessage.Append("Sender".PadRight(30));
responseMessage.AppendLine();
responseMessage.Append(new string('-', 20));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 25));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 30));
lock (m_clientRequestHistory)
{
foreach (ClientRequestInfo historicRequest in m_clientRequestHistory)
{
responseMessage.AppendLine();
responseMessage.Append(historicRequest.Request.Command.PadRight(20));
responseMessage.Append(' ');
responseMessage.Append(historicRequest.ReceivedAt.ToString(CultureInfo.InvariantCulture).PadRight(25));
responseMessage.Append(' ');
responseMessage.Append($"{historicRequest.Sender.ClientUser.Identity.Name} from {historicRequest.Sender.MachineName}".PadRight(30));
}
}
responseMessage.AppendLine();
responseMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, responseMessage.ToString());
}
}
示例13: ShowSchedules
private void ShowSchedules(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a list of schedules for processes defined in the service.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Schedules -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
if (m_processScheduler.Schedules.Count > 0)
{
// Display info about all the process schedules defined in the service.
StringBuilder responseMessage = new StringBuilder();
responseMessage.AppendFormat("Process schedules defined in {0}:", Name);
responseMessage.AppendLine();
responseMessage.AppendLine();
responseMessage.Append("Name".PadRight(25));
responseMessage.Append(' ');
responseMessage.Append("Rule".PadRight(20));
responseMessage.Append(' ');
responseMessage.Append("Last Due".PadRight(30));
responseMessage.AppendLine();
responseMessage.Append(new string('-', 25));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 20));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 30));
foreach (Schedule schedule in m_processScheduler.Schedules)
{
responseMessage.AppendLine();
responseMessage.Append(schedule.Name.PadRight(25));
responseMessage.Append(' ');
responseMessage.Append(schedule.Rule.PadRight(20));
responseMessage.Append(' ');
if (schedule.LastDueAt != DateTime.MinValue)
responseMessage.Append(schedule.LastDueAt.ToString(CultureInfo.InvariantCulture).PadRight(30));
else
responseMessage.Append("[Never]".PadRight(30));
}
responseMessage.AppendLine();
responseMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, responseMessage.ToString());
}
else
{
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "No process schedules are defined in {0}.\r\n\r\n", Name);
}
}
}
示例14: ShowProcesses
private void ShowProcesses(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest)
{
bool showAdvancedHelp = requestInfo.Request.Arguments.Exists("advanced");
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Displays a list of defined service processes or running system processes.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Processes -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
if (m_supportSystemCommands && showAdvancedHelp)
{
helpMessage.AppendLine();
helpMessage.Append(" -system".PadRight(20));
helpMessage.Append("Displays system processes instead of service processes");
}
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
bool listSystemProcesses = requestInfo.Request.Arguments.Exists("system");
if (listSystemProcesses && m_supportSystemCommands)
{
// Enumerate "system" processes when -system parameter is specified
StringBuilder responseMessage = new StringBuilder();
responseMessage.AppendFormat("Processes running on {0}:", Environment.MachineName);
responseMessage.AppendLine();
responseMessage.AppendLine();
responseMessage.Append("ID".PadRight(5));
responseMessage.Append(' ');
responseMessage.Append("Name".PadRight(25));
responseMessage.Append(' ');
responseMessage.Append("Priority".PadRight(15));
responseMessage.Append(' ');
responseMessage.Append("Responding".PadRight(10));
responseMessage.Append(' ');
responseMessage.Append("Start Time".PadRight(20));
responseMessage.AppendLine();
responseMessage.Append(new string('-', 5));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 25));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 15));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 10));
responseMessage.Append(' ');
responseMessage.Append(new string('-', 20));
foreach (Process process in Process.GetProcesses())
{
try
{
responseMessage.Append(process.StartInfo.UserName);
responseMessage.AppendLine();
responseMessage.Append(process.Id.ToString().PadRight(5));
responseMessage.Append(' ');
responseMessage.Append(process.ProcessName.PadRight(25));
responseMessage.Append(' ');
#if MONO
responseMessage.Append("Undetermined".PadRight(15));
responseMessage.Append(' ');
responseMessage.Append("N/A".PadRight(10));
responseMessage.Append(' ');
#else
responseMessage.Append(process.PriorityClass.ToString().PadRight(15));
responseMessage.Append(' ');
responseMessage.Append((process.Responding ? "Yes" : "No").PadRight(10));
responseMessage.Append(' ');
#endif
responseMessage.Append(process.StartTime.ToString("MM/dd/yy hh:mm:ss tt").PadRight(20));
}
// ReSharper disable once EmptyGeneralCatchClause
catch
{ }
}
responseMessage.AppendLine();
responseMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, responseMessage.ToString());
}
else
{
if (m_processes.Count > 0)
{
// Display info about all the processes defined in the service.
StringBuilder responseMessage = new StringBuilder();
//.........这里部分代码省略.........
示例15: UnscheduleProcess
private void UnscheduleProcess(ClientRequestInfo requestInfo)
{
if (requestInfo.Request.Arguments.ContainsHelpRequest || requestInfo.Request.Arguments.OrderedArgCount < 1)
{
StringBuilder helpMessage = new StringBuilder();
helpMessage.Append("Unschedules a scheduled process defined in the service.");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Usage:");
helpMessage.AppendLine();
helpMessage.Append(" Unschedule \"Process Name\" -options");
helpMessage.AppendLine();
helpMessage.AppendLine();
helpMessage.Append(" Options:");
helpMessage.AppendLine();
helpMessage.Append(" -?".PadRight(20));
helpMessage.Append("Displays this help message");
helpMessage.AppendLine();
helpMessage.Append(" -save".PadRight(20));
helpMessage.Append("Saves all process schedules to the config file");
helpMessage.AppendLine();
helpMessage.Append(" -list".PadRight(20));
helpMessage.Append("Displays list of all process schedules");
helpMessage.AppendLine();
helpMessage.AppendLine();
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, helpMessage.ToString());
}
else
{
string processName = requestInfo.Request.Arguments["orderedarg1"];
bool saveSchedules = requestInfo.Request.Arguments.Exists("save");
bool listSchedules = requestInfo.Request.Arguments.Exists("list");
Schedule scheduleToRemove = m_processScheduler.FindSchedule(processName);
if ((object)scheduleToRemove != null)
{
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "Attempting to unschedule process \"{0}\"...\r\n\r\n", processName);
m_processScheduler.Schedules.Remove(scheduleToRemove);
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Information, "Successfully unscheduled process \"{0}\".\r\n\r\n", processName);
if (saveSchedules)
{
requestInfo.Request = ClientRequest.Parse("SaveSchedules");
SaveSchedules(requestInfo);
}
}
else
{
UpdateStatus(requestInfo.Sender.ClientID, UpdateType.Alarm, "Failed to unschedule process \"{0}\". Process is not scheduled.\r\n\r\n", processName);
}
if (!listSchedules)
return;
requestInfo.Request = ClientRequest.Parse("Schedules");
ShowSchedules(requestInfo);
}
}