public override System.Type ResolveUri(string uri, out LibraryFailure reason) { if (cache.ContainsKey(uri)) { reason = cache[uri] == null ? LibraryFailure.Missing : LibraryFailure.None; return cache[uri]; } var base_name = uri.Substring(4); var type_name = "Flabbergast.Library." + base_name.Replace('/', '.'); foreach (var path in paths) { foreach (var extension in new[] { ".nflbgst", ".flbgst"}) { var src_file = Path.Combine(path, base_name + extension); if (!File.Exists(src_file)) { continue; } var parser = Parser.Open(src_file); var type = parser.ParseFile(collector, unit, type_name); reason = type == null ? LibraryFailure.Corrupt : LibraryFailure.None; cache[uri] = type; return type; } } cache[uri] = null; reason = LibraryFailure.Missing; return null; }
public override System.Type ResolveUri(string uri, out LibraryFailure reason) { if (cache.ContainsKey(uri)) { reason = cache[uri] == null ? LibraryFailure.Missing : LibraryFailure.None; return(cache[uri]); } var base_name = uri.Substring(4); var type_name = "Flabbergast.Library." + base_name.Replace('/', '.'); foreach (var path in paths) { foreach (var extension in new[] { ".no_0", ".o_0" }) { var src_file = Path.Combine(path, base_name + extension); if (!File.Exists(src_file)) { continue; } var parser = Parser.Open(src_file); var type = parser.ParseFile(collector, unit, type_name); reason = type == null ? LibraryFailure.Corrupt : LibraryFailure.None; cache[uri] = type; return(type); } } cache[uri] = null; reason = LibraryFailure.Missing; return(null); }
public override Type ResolveUri(string uri, out LibraryFailure reason) { var base_name = uri.Substring(4).Replace('/', '.'); var type_name = "Flabbergast.Library." + base_name; var dll_name = base_name + ".dll"; foreach (var path in paths) { var dll_file = Path.Combine(path, dll_name); if (!File.Exists(dll_file)) { continue; } var assembly = Assembly.LoadFrom(dll_file); if (assembly == null) { reason = LibraryFailure.Corrupt; return(null); } var type = assembly.GetType(type_name, false); if (type == null) { reason = LibraryFailure.Corrupt; return(null); } reason = LibraryFailure.None; return(type); } reason = LibraryFailure.Missing; return(null); }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("http:") && !uri.StartsWith("https:")) { reason = LibraryFailure.Missing; return(null); } reason = LibraryFailure.None; var src_ref = new NativeSourceReference(uri); try { var response = WebRequest.Create(uri).GetResponse(); var frame = new FixedFrame("http" + uri.GetHashCode(), src_ref); var data = new byte[response.ContentLength]; var stream = response.GetResponseStream(); for (var offset = 0; offset < data.Length; offset += stream.Read(data, offset, data.Length - offset)) { ; } frame.Add("data", data); frame.Add("content_type", response.ContentType); return(new Precomputation(frame)); } catch (Exception e) { return(new FailureComputation(master, src_ref, e.Message)); } }
public override Type ResolveUri(string uri, out LibraryFailure reason) { var base_name = uri.Substring(4).Replace('/', '.'); var type_name = "Flabbergast.Library." + base_name; foreach (var dll_file in Finder.FindAll(type_name, ".dll")) { var assembly = Assembly.LoadFrom(dll_file); if (assembly == null) { reason = LibraryFailure.Corrupt; return(null); } var type = assembly.GetType(type_name, false); if (type == null) { reason = LibraryFailure.Corrupt; return(null); } reason = LibraryFailure.None; return(type); } reason = LibraryFailure.Missing; return(null); }
public Computation ResolveUri(TaskMaster task_master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("sql:")) { reason = LibraryFailure.Missing; return(null); } reason = LibraryFailure.None; try { var param = new Dictionary <string, string>(); int first_colon = 5; while (first_colon < uri.Length && uri[first_colon] != ':') { first_colon++; } if (first_colon >= uri.Length) { return(new FailureComputation(task_master, new ClrSourceReference(), "Bad provider in URI “" + uri + "”.")); } var provider = uri.Substring(4, first_colon - 4); int question_mark = first_colon; while (question_mark < uri.Length && uri[question_mark] != '?') { question_mark++; } var uri_fragment = uri.Substring(first_colon + 1, question_mark - first_colon - 1); if (question_mark < uri.Length - 1) { foreach (var param_str in uri.Substring(question_mark + 1).Split(new [] { '&' })) { if (param_str.Length == 0) { continue; } var parts = param_str.Split(new [] { '=' }, 2); if (parts.Length != 2) { return(new FailureComputation(task_master, new ClrSourceReference(), "Bad parameter “" + param_str + "”.")); } param[parts[0]] = parts[1]; } } string error; var connection = DbParser.Parse(provider, uri_fragment, param, out error); if (connection == null) { return(new FailureComputation(task_master, new ClrSourceReference(), error ?? "Bad URI.")); } connection.Open(); var connection_proxy = ReflectedFrame.Create(task_master, connection, connection_hooks); connection_proxy.Set("provider", new SimpleStringish(provider)); return(new Precomputation(connection_proxy)); } catch (Exception e) { return(new FailureComputation(task_master, new ClrSourceReference(e), e.Message)); } }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("settings:")) { reason = LibraryFailure.Missing; return(null); } var setting = ConfigurationManager.AppSettings[HttpUtility.UrlDecode(uri.Substring(9))]; reason = LibraryFailure.None; return(new Precomputation(setting == null ? (object)Unit.NULL : (object)new SimpleStringish(setting))); }
public Type ResolveUri(string uri, out LibraryFailure reason) { reason = LibraryFailure.Missing; if (!uri.StartsWith("lib:")) return null; var type_name = "Flabbergast.Library." + uri.Substring(4).Replace('/', '.'); var result = Type.GetType(type_name, false); if (result == null) { return null; } else { reason = LibraryFailure.None; return result; } }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { reason = LibraryFailure.Missing; if (!uri.StartsWith("current:")) { return(null); } if (information.ContainsKey(uri.Substring(8))) { reason = LibraryFailure.None; return(information[uri.Substring(8)]); } return(null); }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("ftp:") && !uri.StartsWith("ftps:")) { reason = LibraryFailure.Missing; return(null); } reason = LibraryFailure.None; try { return(new Precomputation(new WebClient().DownloadData(uri))); } catch (Exception e) { return(new FailureComputation(master, new NativeSourceReference(uri), e.Message)); } }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("file:")) { reason = LibraryFailure.Missing; return(null); } reason = LibraryFailure.None; try { return(new Precomputation(File.ReadAllBytes(new Uri(uri).LocalPath))); } catch (Exception e) { return(new FailureComputation(master, new NativeSourceReference(uri), e.Message)); } }
public Computation ResolveUri(TaskMaster task_master, string uri, out LibraryFailure reason) { var type = loader.ResolveUri(uri, out reason); if (reason != LibraryFailure.None || type == null) { return(null); } if (!typeof(Computation).IsAssignableFrom(type)) { throw new InvalidCastException(String.Format( "Class {0} for URI {1} from {2} is not a computation.", type, uri, UriName)); } return((Computation)Activator.CreateInstance(type, task_master)); }
public override void ReportExternalError(string uri, LibraryFailure reason) { Dirty = true; switch (reason) { case LibraryFailure.BadName: Console.Error.WriteLine("The URI “{0}” is not a valid name.", uri); break; case LibraryFailure.Corrupt: Console.Error.WriteLine("The URI “{0}” could not be loaded due to corruption.", uri); break; case LibraryFailure.Missing: Console.Error.WriteLine("The URI “{0}” could not be found.", uri); break; default: Console.Error.WriteLine("The URI “{0}” could not be resolved.", uri); break; } }
public Computation ResolveUri(TaskMaster task_master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("env:")) { reason = LibraryFailure.Missing; return(null); } var name = uri.Substring(4); if (!Regex.IsMatch(name, "[A-Z_][A-Z0-9_]*")) { reason = LibraryFailure.BadName; return(null); } reason = LibraryFailure.None; var content = Environment.GetEnvironmentVariable(name); return(new Precomputation(content == null ? (object)Unit.NULL : new SimpleStringish(content))); }
public Type ResolveUri(string uri, out LibraryFailure reason) { reason = LibraryFailure.Missing; if (!uri.StartsWith("lib:")) { return(null); } var type_name = "Flabbergast.Library." + uri.Substring(4).Replace('/', '.'); var result = Type.GetType(type_name, false); if (result == null) { return(null); } else { reason = LibraryFailure.None; return(result); } }
public Computation ResolveUri(TaskMaster master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("res:")) { reason = LibraryFailure.Missing; return(null); } var tail = HttpUtility.UrlDecode(uri.Substring(4)).Replace('/', Path.DirectorySeparatorChar); try { foreach (var filename in Finder.FindAll(tail, "")) { reason = LibraryFailure.None; return(new Precomputation(File.ReadAllBytes(filename))); } reason = LibraryFailure.Missing; return(null); } catch (Exception e) { reason = LibraryFailure.None; return(new FailureComputation(master, new NativeSourceReference(uri), e.Message)); } }
public override void ReportExternalError(string uri, LibraryFailure reason) { MakeDirty(); switch (reason) { case LibraryFailure.BadName: buffer.Write("<tr><td></td><td>The URI “{0}” is not a valid name.</td></tr>", uri); break; case LibraryFailure.Corrupt: buffer.Write("<tr><td></td><td>The URI “{0}” could not be loaded due to corruption.</td></tr>", uri); break; case LibraryFailure.Missing: buffer.Write("<tr><td></td><td>The URI “{0}” could not be found.</td></tr>", uri); break; default: buffer.Write("<tr><td></td><td>The URI “{0}” could not be resolved.</td></tr>", uri); break; } }
public override System.Type ResolveUri(string uri, out LibraryFailure reason) { if (cache.ContainsKey(uri)) { reason = cache[uri] == null ? LibraryFailure.Missing : LibraryFailure.None; return(cache[uri]); } var base_name = uri.Substring(4); var type_name = "Flabbergast.Library." + base_name.Replace('/', '.'); foreach (var src_file in Finder.FindAll(base_name, ".no_0", ".o_0")) { var parser = Parser.Open(src_file); var type = parser.ParseFile(collector, unit, type_name); reason = type == null ? LibraryFailure.Corrupt : LibraryFailure.None; cache[uri] = type; return(type); } cache[uri] = null; reason = LibraryFailure.Missing; return(null); }
public abstract Type ResolveUri(string uri, out LibraryFailure reason);
public Computation ResolveUri(TaskMaster task_master, string uri, out LibraryFailure reason) { if (!uri.StartsWith("sql:")) { reason = LibraryFailure.Missing; return null; } reason = LibraryFailure.None; try { var param = new Dictionary<string, string>(); int first_colon = 5; while (first_colon < uri.Length && uri[first_colon] != ':') first_colon++; if (first_colon >= uri.Length) { return new FailureComputation(task_master, new ClrSourceReference(), "Bad provider in URI “" + uri + "”."); } var provider = uri.Substring(4, first_colon - 4); int question_mark = first_colon; while (question_mark < uri.Length && uri[question_mark] != '?') question_mark++; var uri_fragment = uri.Substring(first_colon + 1, question_mark - first_colon - 1); if (question_mark < uri.Length - 1) { foreach (var param_str in uri.Substring(question_mark + 1).Split(new []{'&'})) { if (param_str.Length == 0) continue; var parts = param_str.Split(new []{'='}, 2); if (parts.Length != 2) { return new FailureComputation(task_master, new ClrSourceReference(), "Bad parameter “" + param_str + "”."); } param[parts[0]] = parts[1]; } } string error; var connection = DbParser.Parse(provider, uri_fragment, param, out error); if (connection == null) { return new FailureComputation(task_master, new ClrSourceReference(), error ?? "Bad URI."); } connection.Open(); var connection_proxy = ReflectedFrame.Create(task_master, connection, connection_hooks); connection_proxy.Set("provider", new SimpleStringish(provider)); return new Precomputation(connection_proxy); } catch (Exception e) { return new FailureComputation(task_master, new ClrSourceReference(e), e.Message); } }
public abstract void ReportExternalError(string uri, LibraryFailure reason);
public override Type ResolveUri(string uri, out LibraryFailure reason) { var base_name = uri.Substring(4).Replace('/', '.'); var type_name = "Flabbergast.Library." + base_name; var dll_name = base_name + ".dll"; foreach (var path in paths) { var dll_file = Path.Combine(path, dll_name); if (!File.Exists(dll_file)) { continue; } var assembly = Assembly.LoadFrom(dll_file); if (assembly == null) { reason = LibraryFailure.Corrupt; return null; } var type = assembly.GetType(type_name, false); if (type == null) { reason = LibraryFailure.Corrupt; return null; } reason = LibraryFailure.None; return type; } reason = LibraryFailure.Missing; return null; }
public override void ReportExternalError(string uri, LibraryFailure reason) { }