Exemplo n.º 1
0
        public CacheKeepAlive(IRepository repository, ICacheSourceInstance cache, IMonik monik)
            : base(repository, cache, monik)
        {
            _cache = cache;

            _status = new Dictionary <int, KeepAlive_>();
        }
Exemplo n.º 2
0
        public MessagePump(IMonikServiceSettings settings, ICacheSourceInstance cache, IMessageProcessor processor, IMonik monik)
        {
            _queueReaderSettings = settings.Readers;

            _cache     = cache;
            _processor = processor;
            _monik     = monik;
        }
Exemplo n.º 3
0
        private readonly ConcurrentDictionary <IMetricObject, byte> _metrics; // as HashSet, byte value is not used

        public CacheMetric(IRepository repository, ILifetimeScope autofac,
                           ICacheSourceInstance sourceCache, IMonik monik)
        {
            _repository  = repository;
            _autofac     = autofac;
            _sourceCache = sourceCache;
            _monik       = monik;

            _shedulerPerMin = Scheduler.CreatePerMinute(monik,
                                                        this.BackgroundIntervalPush, "CacheMetric.BackgroundIntervalPush");

            _shedulerPerSec = Scheduler.CreatePerSecond(monik,
                                                        this.BackgroundSecondPush, "CacheMetric.BackgroundSecondPush");

            _metrics = new ConcurrentDictionary <IMetricObject, byte>();

            _sourceCache.RemoveMetrics += OnRemoveMetrics;
        }
Exemplo n.º 4
0
        public SecureNancyModule(ICacheMetric cacheMetric, ICacheSourceInstance sourceInstanceCache, IMonik monik)
        {
            this.RequiresAuthentication();

            Delete("/instances/{id:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Delete /instances/{args.id} by {Context.CurrentUser.Identity.Name}");
                    sourceInstanceCache.RemoveInstance(args.id);
                    return(HttpStatusCode.OK);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method DELETE /instances/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Delete("/metrics/{id:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Delete /metrics/{args.id} by {Context.CurrentUser.Identity.Name}");
                    cacheMetric.RemoveMetric(args.id);
                    return(HttpStatusCode.OK);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method DELETE /metrics/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Delete("/sources/{id:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Delete /sources/{args.id} by {Context.CurrentUser.Identity.Name}");
                    sourceInstanceCache.RemoveSource((short)args.id);
                    return(HttpStatusCode.OK);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method DELETE /sources/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Post("/groups", args =>
            {
                try
                {
                    var group = this.Bind <Group_>();
                    monik.ApplicationInfo($"Post /groups {group.Name} by {Context.CurrentUser.Identity.Name}");
                    var result = sourceInstanceCache.CreateGroup(group);
                    return(Response.AsJson(result, HttpStatusCode.Created)
                           .WithHeader("Location", $"/groups/{result.ID}"));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method POST /groups : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });
            Delete("/groups/{id:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Delete /groups/{args.id} by {Context.CurrentUser.Identity.Name}");
                    var result = sourceInstanceCache.RemoveGroup((short)args.id);
                    return(result ? HttpStatusCode.OK : HttpStatusCode.NotFound);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method DELETE /groups/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });
            Put("/groups/{groupId:int}/instances/{instanceId:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Put /groups/{args.groupId}/instances/{args.instanceId} by {Context.CurrentUser.Identity.Name}");
                    sourceInstanceCache.AddInstanceToGroup(args.instanceId, (short)args.groupId);
                    return(HttpStatusCode.OK);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method PUT /groups/id/instances/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });
            Delete("/groups/{groupId:int}/instances/{instanceId:int}", args =>
            {
                try
                {
                    monik.ApplicationInfo($"Delete /groups/{args.groupId}/instances/{args.instanceId} by {Context.CurrentUser.Identity.Name}");
                    var result = sourceInstanceCache.RemoveInstanceFromGroup(args.instanceId, (short)args.groupId);
                    return(result ? HttpStatusCode.OK : HttpStatusCode.NotFound);
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method DELETE /groups/id/instances/id : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });
        }
Exemplo n.º 5
0
 public override CacheKeepAlive CreateCache(IRepository repository, ICacheSourceInstance cache, IMonik monik)
 {
     return(new CacheKeepAlive(repository, cache, monik));
 }
Exemplo n.º 6
0
 public CacheLog(IRepository repository, ICacheSourceInstance cache, IMonik monik)
     : base(repository, cache, monik)
 {
     _logs       = new ConcurrentQueue <Log_>();
     OldestLogId = 0;
 }
Exemplo n.º 7
0
 public abstract TCache CreateCache(IRepository repository, ICacheSourceInstance cache, IMonik monik);
Exemplo n.º 8
0
        public MainNancyModule(IRepository repo, ICacheLog cacheLog, ICacheKeepAlive cacheKeepAlive,
                               ICacheMetric cacheMetric, ICacheSourceInstance sourceInstanceCache, IMonik monik)
        {
            _repo                = repo;
            _cacheLog            = cacheLog;
            _cacheKeepAlive      = cacheKeepAlive;
            _cacheMetric         = cacheMetric;
            _sourceInstanceCache = sourceInstanceCache;
            _monik               = monik;

            Get("/sources", args =>
            {
                try
                {
                    List <Source> result = sourceInstanceCache.GetAllSources();
                    return(Response.AsJson <Source[]>(result.ToArray()));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /sources : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/instances", args =>
            {
                try
                {
                    List <Instance> result = sourceInstanceCache.GetAllInstances();
                    return(Response.AsJson <Instance[]>(result.ToArray()));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /instances : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/groups", args =>
            {
                try
                {
                    List <Group> result = sourceInstanceCache.GetAllGroups();
                    return(Response.AsJson <Group[]>(result.ToArray()));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /groups : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Post("/logs5", args =>
            {
                try
                {
                    var filter = this.Bind <LogRequest>();

                    List <Log_> result = cacheLog.GetLogs5(filter);
                    return(Response.AsJson <Log_[]>(result.ToArray()));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /logs5 : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Post("/keepalive2", args =>
            {
                var filter = this.Bind <KeepAliveRequest>();

                try
                {
                    List <KeepAlive_> result = cacheKeepAlive.GetKeepAlive2(filter);
                    return(Response.AsJson <KeepAlive_[]>(result.ToArray()));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /keepalive : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/keepalive-status", args =>
            {
                var filter = new KeepAliveRequest();
                return(GetKeepAliveStatuses(filter));
            });

            Post("/keepalive-status", args =>
            {
                var filter = this.Bind <KeepAliveRequest>();
                return(GetKeepAliveStatuses(filter));
            });

            Get("/metrics", args =>
            {
                try
                {
                    var result = cacheMetric.GetMetricsDescriptions();
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/metrics/currents", args =>
            {
                try
                {
                    var result = cacheMetric.GetAllCurrentMeasures();
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics/currents : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Post("/metrics/currents", args =>
            {
                try
                {
                    var filter = this.Bind <MetricRequest>();

                    var result = cacheMetric.GetCurrentMeasures(filter);
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method POST /metrics/currents : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/metrics/{id:int}/current", args =>
            {
                try
                {
                    int metricId = args.id;

                    var result = cacheMetric.GetCurrentMeasure(metricId);
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics/id/current : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/metrics/windows", args =>
            {
                try
                {
                    var result = cacheMetric.GetAllWindowsMeasures();
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics/windows : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Post("/metrics/windows", args =>
            {
                try
                {
                    var filter = this.Bind <MetricRequest>();

                    var result = cacheMetric.GetWindowMeasures(filter);
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method POST /metrics/windows : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/metrics/{id:int}/window", args =>
            {
                try
                {
                    int metricId = args.id;

                    var result = cacheMetric.GetWindowMeasure(metricId);
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics/id/window : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });

            Get("/metrics/{id:int}/history", args =>
            {
                try
                {
                    int metricId = args.id;
                    var p        = this.Bind <MetricHistoryRequestParameters>();
                    var result   = cacheMetric.GetMetricHistory(metricId, p.Amount, p.Skip);
                    return(Response.AsJson(result));
                }
                catch (Exception ex)
                {
                    monik.ApplicationError($"Method /metrics/id/history : {ex.Message}");
                    return(HttpStatusCode.InternalServerError);
                }
            });
        }