make struct list_item more generic
[actl.git] / actl.h
blob30fdaca20e34eae438b506e69d23cc69b17cf9c5
1 /*
2 * Copyright (c) 2016 Mohamed Aslan <maslan@sce.carleton.ca>
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 #ifndef ACTL_H
18 #define ACTL_H
20 #include <libof.h>
21 #include <dht.h>
22 #include "clustering.h"
25 struct actl_ctx {
26 struct config *conf;
27 struct dht_node *node;
28 struct of_controller *cntl;
29 int adaptive;
30 int learning;
31 int learn_perval;
32 double target_kpi;
33 double target_phi;
34 struct kmeans_seq kseq;
35 void (*adapt)(struct actl_ctx *, double);
36 int (*put)(struct actl_ctx *, const char *, const char *);
37 int (*get)(struct actl_ctx *, const char *, char **);
40 struct app{
41 char *name;
42 int (*a_init)(struct actl_ctx *);
43 int (*a_main)(int, char **);
44 void (*a_handler)(struct of_event *);
45 double (*a_kpi)();
48 #endif