convert kmeans_incr threshold
[actl.git] / actl.h
blobe58a3606e2ce5051114fc14539bbbef44f41deaa
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 <netinet/in.h>
23 #include "clustering.h"
26 struct host_info {
27 struct in_addr ip_addr;
28 uint64_t dpid;
29 uint16_t port;
32 struct actl_ctx {
33 struct config *conf;
34 struct dht_node *node;
35 struct of_controller *cntl;
36 int adaptive;
37 int learning;
38 int learn_perval;
39 double target_kpi;
40 double learning_phi;
41 union {
42 struct kmeans_seq kseq;
43 struct kmeans_incr kincr;
44 }; /* C11 */
45 void (*adapt)(struct actl_ctx *, double);
46 int (*put)(struct actl_ctx *, const char *, const char *);
47 int (*get)(struct actl_ctx *, const char *, char **);
48 void (*topo)(struct actl_ctx *, struct host_info ***, int *);
51 struct app{
52 char *name;
53 int (*a_init)(struct actl_ctx *);
54 int (*a_main)(int, char **);
55 void (*a_handler)(struct of_event *);
56 double (*a_kpi)();
59 #endif