1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using SuperSocket.SocketBase.Metadata;
- namespace SuperSocket.SocketBase
- {
- /// <summary>
- /// Extensions class for SocketBase project
- /// </summary>
- public static class Extensions
- {
- /// <summary>
- /// Gets the app server instance in the bootstrap by name, ignore case
- /// </summary>
- /// <param name="bootstrap">The bootstrap.</param>
- /// <param name="name">The name of the appserver instance.</param>
- /// <returns></returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public static IWorkItem GetServerByName(this IBootstrap bootstrap, string name)
- {
- if (string.IsNullOrEmpty(name))
- throw new ArgumentNullException("name");
- return bootstrap.AppServers.FirstOrDefault(s => name.Equals(s.Name, StringComparison.OrdinalIgnoreCase));
- }
- /// <summary>
- /// Gets the status info metadata from the server type.
- /// </summary>
- /// <param name="serverType">Type of the server.</param>
- /// <returns></returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public static StatusInfoAttribute[] GetStatusInfoMetadata(this Type serverType)
- {
- if (serverType == null)
- throw new ArgumentNullException("serverType");
- var attType = typeof(AppServerMetadataTypeAttribute);
- while (true)
- {
- var atts = serverType.GetCustomAttributes(attType, false);
- if (atts != null && atts.Length > 0)
- {
- var serverMetadataTypeAtt = atts[0] as AppServerMetadataTypeAttribute;
- return serverMetadataTypeAtt
- .MetadataType
- .GetCustomAttributes(typeof(StatusInfoAttribute), true)
- .OfType<StatusInfoAttribute>().ToArray();
- }
- if (serverType.BaseType == null)
- return null;
- serverType = serverType.BaseType;
- }
- }
- }
- }
|