/// <summary> /// Initializes a new instance of the <see cref="EditableListInitExpression" /> class. /// </summary> /// <param name="listInit"> /// The <see cref="ListInitExpression" /> . /// </param> public EditableListInitExpression(ListInitExpression listInit) : this() { NewExpression = CreateEditableExpression(listInit.NewExpression); foreach (ElementInit e in listInit.Initializers) { Initializers.Add(new EditableElementInit(e)); } }
internal RedisSubscriberConnection(IPEndPoint[] endpoints, RedisClientOptions options) : base(endpoints, options) { _subscriptions = new SubscriptionSplitter(); Initializers.Add(new SubscriptionsInitialization(_subscriptions)); }
public CodeUsingStatement(CodeExpression name, CodeExpression value) : this() { Initializers.Add(new CodeAssignStatement(name, value)); }
public void Add(TLDefinition tld, Stream srcStm) { TLFunction tlf = tld as TLFunction; if (tlf != null) { if (IsConstructor(tlf.Signature, tlf.Class)) { Constructors.Add(tlf, srcStm); } else if (tlf.Signature is SwiftClassConstructorType) { if (ClassConstructor.Values.Count() == 0) { ClassConstructor.Add(tlf, srcStm); } else { throw ErrorHelper.CreateError(ReflectorError.kInventoryBase + 12, $"multiple type metadata accessors for {tlf.Class.ClassName.ToFullyQualifiedName ()}"); } } else if (IsDestructor(tlf.Signature, tlf.Class)) { Destructors.Add(tlf, srcStm); } else if (IsProperty(tlf.Signature, tlf.Class)) { if (IsSubscript(tlf.Signature, tlf.Class)) { if (IsPrivateProperty(tlf.Signature, tlf.Class)) { PrivateSubscripts.Add(tlf); } else { Subscripts.Add(tlf); } } else { if (IsStaticProperty(tlf.Signature, tlf.Class)) { if (IsPrivateProperty(tlf.Signature, tlf.Class)) { StaticPrivateProperties.Add(tlf, srcStm); } else { StaticProperties.Add(tlf, srcStm); } } else { if (IsPrivateProperty(tlf.Signature, tlf.Class)) { PrivateProperties.Add(tlf, srcStm); } else { Properties.Add(tlf, srcStm); } } } } else if (IsMethodOnClass(tlf.Signature, tlf.Class)) { if (tlf is TLMethodDescriptor) { MethodDescriptors.Add(tlf, srcStm); } else { Methods.Add(tlf, srcStm); } } else if (IsStaticMethod(tlf.Signature, tlf.Class)) { StaticFunctions.Add(tlf, srcStm); } else if (IsWitnessTable(tlf.Signature, tlf.Class)) { WitnessTable.Add(tlf, srcStm); } else if (IsInitializer(tlf.Signature, tlf.Class)) { Initializers.Add(tlf, srcStm); } else { FunctionsOfUnknownDestination.Add(tlf); } return; } var meta = tld as TLDirectMetadata; if (meta != null) { if (DirectMetadata != null) { throw ErrorHelper.CreateError(ReflectorError.kInventoryBase + 13, $"duplicate direct metadata in class {DirectMetadata.Class.ClassName.ToFullyQualifiedName ()}"); } DirectMetadata = meta; return; } var lazy = tld as TLLazyCacheVariable; if (lazy != null) { if (LazyCacheVariable != null) { throw ErrorHelper.CreateError(ReflectorError.kInventoryBase + 14, $"duplicate lazy cache variable in class {LazyCacheVariable.Class.ClassName.ToFullyQualifiedName ()}"); } LazyCacheVariable = lazy; return; } var mc = tld as TLMetaclass; if (mc != null) { if (Metaclass != null) { throw ErrorHelper.CreateError(ReflectorError.kInventoryBase + 15, $"duplicate type meta data descriptor in class {Metaclass.Class.ClassName.ToFullyQualifiedName ()}"); } Metaclass = mc; return; } var nom = tld as TLNominalTypeDescriptor; if (nom != null) { if (TypeDescriptor != null) { throw ErrorHelper.CreateError(ReflectorError.kInventoryBase + 16, $"duplicate nominal type descriptor in class {TypeDescriptor.Class.ClassName.ToFullyQualifiedName ()}"); } TypeDescriptor = nom; return; } var tlvar = tld as TLVariable; if (tlvar != null) { if (tlvar is TLPropertyDescriptor tlpropDesc) { PropertyDescriptors.Add(tlpropDesc); } else { Variables.Add(tlvar, srcStm); } return; } var tlprot = tld as TLProtocolConformanceDescriptor; if (tlprot != null) { ProtocolConformanceDescriptors.Add(tlprot); return; } DefinitionsOfUnknownDestination.Add(tld); }
/// <summary> /// Загружает конфигурационный файл из XML /// </summary> /// <param name="xml"></param> /// <param name="context"></param> public void LoadXmlConfig(XElement xml, IBSharpContext context = null) { foreach (var condition in xml.Elements("machine")) { var machine = condition.Attr("code").ToLowerInvariant(); var not = false; if (machine == "not" && !string.IsNullOrWhiteSpace(condition.Attr("name"))) { not = true; machine = condition.Attr("name").ToLowerInvariant(); } if ((machine == MachineName && !not) || (not && machine != MachineName)) { var target = condition.Attr("use"); if (context == null) { throw new Exception("Cannot resolve machine-related config cause context is null"); } var config = context[target]; if (config == null) { throw new Exception("Cannot resolve machine-related config"); } xml = config.Compiled; Log.Info("Usage config " + target + " because machine name is " + (not ? "not " : "") + MachineName); break; } } this.BSharpContext = context; this.Definition = xml; RootFolder = xml.ResolveValue("root", RootFolder); RootFolder = xml.ResolveValue(HostUtils.RootFolderXmlName, RootFolder); ConfigFolder = xml.ResolveValue(HostUtils.ConfigFolderXmlName, ConfigFolder); DllFolder = xml.ResolveValue(HostUtils.DllFolderXmlName, DllFolder); LogFolder = xml.ResolveValue(HostUtils.LogFolderXmlName, LogFolder); TmpFolder = xml.ResolveValue(HostUtils.TmpFolderXmlName, TmpFolder); LogLevel = xml.ResolveValue(HostUtils.LogLevelXmlName, "Info").To <LogLevel>(); UseApplicationName = xml.ResolveValue(HostUtils.UseApplicationName, "false").To <bool>(); AuthCookieName = xml.ResolveValue(HostUtils.AuthCookieName, AuthCookieName); AuthCookieDomain = xml.ResolveValue(HostUtils.AuthCookieDomain, AuthCookieDomain); EncryptBasis = xml.ResolveValue(HostUtils.EncryptBasis, Guid.NewGuid().ToString()); DefaultPage = xml.ResolveValue(HostUtils.DefaultPage, "default.html"); MaxRequestSize = xml.ResolveValue("maxrequestsize", "10000000").ToInt(); RequireLogin = xml.ResolveValue("requirelogin").ToBool(); foreach (XElement bind in xml.Elements(HostUtils.BindingXmlName)) { var excludehost = bind.Attr("excludehost").SmartSplit(); bool process = true; if (0 != excludehost.Count) { var machine = Environment.MachineName.ToUpperInvariant(); foreach (var h in excludehost) { if (machine == h.ToUpperInvariant().Trim()) { process = false; break; } } } if (!process) { continue; } var hostbind = new HostBinding(); hostbind.Port = bind.Attr(HostUtils.PortXmlName).ToInt(); hostbind.Interface = bind.Attr(HostUtils.InterfaceXmlName); string schema = bind.Attr(HostUtils.SchemaXmlName); if (!string.IsNullOrWhiteSpace(schema)) { if (schema == HostUtils.HttpsXmlValue) { hostbind.Schema = HostSchema.Https; } } if (hostbind.Port == 0) { hostbind.Port = HostUtils.DefaultBindingPort; } if (string.IsNullOrWhiteSpace(hostbind.Interface)) { hostbind.Interface = HostUtils.DefaultBindingInterface; } Bindings.Add(hostbind); } foreach (var constant in xml.Elements("constant")) { if (string.IsNullOrWhiteSpace(constant.Attr("code"))) { continue; } Constants[constant.Attr("code").ToLowerInvariant()] = constant.Attr("name"); } foreach (XElement e in xml.Elements(HostUtils.ContentFolder)) { ContentFolders.Add(e.Attr("code")); } ReadModules(xml); foreach (var e in xml.Elements("connection")) { var name = e.Attr("code"); var cstr = e.Attr("name"); if (string.IsNullOrWhiteSpace(name)) { continue; } if (string.IsNullOrWhiteSpace(cstr)) { continue; } ConnectionStrings[name] = cstr; } foreach (var e in xml.Elements("static")) { var name = e.Attr("code"); var folder = EnvironmentInfo.ResolvePath(e.Attr("name")); var role = e.Attr("role"); if (!name.StartsWith("/")) { name = "/" + name; } if (!name.EndsWith("/")) { name += "/"; } if (e.Attr("cache").ToBool()) { this.StaticContentCacheMap[name] = e; } else { this.StaticContentMap[name] = new StaticFolderDescriptor { Key = name, Path = folder, Role = role }; } } foreach (var e in xml.Elements("startup")) { var name = e.Attr("code"); Initializers.Add(name); } foreach (XElement e in xml.Elements(HostUtils.ExContentFolder)) { ExtendedContentFolders.Add(e.Attr("code")); } foreach (XElement e in xml.Elements(HostUtils.IncludeConfigXmlName)) { IncludeConfigMasks.Add(e.Describe().GetEfficienValue()); } foreach (XElement e in xml.Elements(HostUtils.ExcludeConfigXmlName)) { ExcludeConfigMasks.Add(e.Describe().GetEfficienValue()); } foreach (XElement e in xml.Elements("cache")) { Cached.Add(e.Value); } foreach (XElement e in xml.Elements("proxize")) { var key = e.Attr("code"); var url = e.Attr("url"); if (string.IsNullOrWhiteSpace(url)) { if (!string.IsNullOrWhiteSpace(e.Attr("appid"))) { url += "appid=" + e.Attr("appid") + ";"; } if (!string.IsNullOrWhiteSpace(e.Attr("secure"))) { url += "secure=" + e.Attr("secure") + ";"; } if (!string.IsNullOrWhiteSpace(e.Attr("server"))) { url += "server=" + e.Attr("server") + ";"; } } Proxize[key] = url; } foreach (XElement e in xml.Elements("lib")) { AutoconfigureAssemblies.Add(e.AttrOrValue("code")); } ForceNoCache = xml.Attr("forcenocache").ToBool(); var appid = xml.ResolveValue("appid", "0").ToInt(); if (appid != 0) { AddQorpentBinding(appid); Loggy.Info(string.Concat("AppId is [", appid, "]")); } LoggerName = xml.ResolveValue("loggername", ""); LoggerHost = xml.ResolveValue("loggerhost", ""); LoggerPort = xml.ResolveValue("loggerport", "0").ToInt(); LoggerFormat = xml.ResolveValue("loggerformat", "").Replace("%{", "${"); this.AccessAllowOrigin = xml.ResolveValue("origin", ""); foreach (var e in xml.Elements("require")) { var appname = e.Attr("code") + e.Attr("suffix"); var proxize = e.GetSmartValue("proxize").ToBool() || e.Attr("name") == "proxize"; if (proxize) { if (null == context) { this.Log.Error("context not provi " + appname); } var cls = context[appname]; if (null == cls) { this.Log.Error("cannot find application for proxize " + appname); } else { var sappid = cls.Compiled.ResolveValue("appid"); var services = cls.Compiled.Elements("service"); foreach (var srv in services) { var root = srv.Attr("code"); var server = e.Attr("server"); var cp = "appid=" + sappid + ";"; if (!string.IsNullOrWhiteSpace(server)) { cp += "server=" + server; } this.Proxize[root] = cp; } } } } }
public virtual T AddInitializer(Action <IContainer> initializer) { Initializers.Add(initializer); return(this as T); }
internal RedisCommanderConnection(IPEndPoint[] endpoints, RedisClientOptions options, ProcedureInitializer proceduresInitializer) : base(endpoints, options) { Initializers.Add(proceduresInitializer); }
public void RegisterInitializer(IExecutableHandler handler) { Initializers.Add(handler); }