public void PublishEvent(string name, object data) { // Get all plugins with event handlers for the current event // or for <all> events. var handlers = _pluginEngine.GetAll() .Where(p => p.State == PluginState.Loaded) .Select(p => p.Package.GetManifest()) .SelectMany( m => m.EventHandlers.Where(e => e.Name == name || e.Name == All)) .ToList(); _logger.Debug("Publishing event {EventName} to {Count} handlers.", name, handlers.Count()); foreach (var handler in handlers) { // These are the handlers for our event try { _logger.Debug("Calling {Target} for event {EventName}.", handler.Target, name); if (handler.Name == All) { _rpcClient.Call(handler.Target, new[] { name, data }); } else { _rpcClient.Call(handler.Target, new[] { data }); } } catch (Exception e) { _logger.Error(e, "Error when calling event handler {EventHandler}", handler); } } }
public PluginsModule(IPluginEngine pluginEngine, IJsonRpcClient rpcClient) : base("plugins") { Get["/{id}/{path*}"] = _ => { string id = _.id; string path = _.path; var plugin = pluginEngine.Get(id); if (plugin == null) { return(404); } var data = rpcClient.Call <byte[]>(string.Format("{0}.resource.get", id), new[] { path }); if (data == null) { return(404); } var contentType = MimeTypes.GetMimeType(path); return(Response.FromStream(() => new MemoryStream(data), contentType)); }; }
public PluginsModule(IPluginEngine pluginEngine, IJsonRpcClient rpcClient) : base("plugins") { Get["/{id}/{path*}"] = _ => { string id = _.id; string path = _.path; var plugin = pluginEngine.Get(id); if (plugin == null) { return 404; } var data = rpcClient.Call<byte[]>(string.Format("{0}.resource.get", id), new[] {path}); if (data == null) { return 404; } var contentType = MimeTypes.GetMimeType(path); return Response.FromStream(() => new MemoryStream(data), contentType); }; }
public virtual Task <byte[]> Call(CallParams callParams, DefaultBlockParameter blockParameter) { return(_proxyClient.Call(callParams, blockParameter)); }