1 /*
2  * Copyright (C) 2016 Jakub Kruszona-Zawadzki, Core Technology Sp. z o.o.
3  *
4  * This file is part of MooseFS.
5  *
6  * MooseFS is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, version 2 (only).
9  *
10  * MooseFS is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with MooseFS; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA
18  * or visit http://www.gnu.org/licenses/gpl-2.0.html
19  */
20 
21 #ifndef _MATOCSSERV_H_
22 #define _MATOCSSERV_H_
23 
24 #include <inttypes.h>
25 #include "chunks.h" // MAXCSCOUNT
26 
27 void matocsserv_usagedifference(double *minusage,double *maxusage,uint16_t *usablescount,uint16_t *totalscount);
28 uint16_t matocsserv_almostfull_servers(void);
29 uint16_t matocsserv_getservers_ordered(uint16_t csids[MAXCSCOUNT],double maxusagediff,uint32_t *min,uint32_t *max);
30 uint16_t matocsserv_getservers_wrandom(uint16_t csids[MAXCSCOUNT],double tolerance,uint16_t demand);
31 uint16_t matocsserv_getservers_lessrepl(uint16_t csids[MAXCSCOUNT],double replimit);
32 void matocsserv_getspace(uint64_t *totalspace,uint64_t *availspace);
33 char* matocsserv_getstrip(void *e);
34 int matocsserv_get_csdata(void *e,uint32_t *servip,uint16_t *servport,uint32_t *servver);
35 void matocsserv_getservdata(void *e,uint32_t *ver,uint64_t *uspc,uint64_t *tspc,uint32_t *chunkcnt,uint64_t *tduspc,uint64_t *tdtspc,uint32_t *tdchunkcnt,uint32_t *errcnt,uint32_t *load);
36 uint8_t matocsserv_can_create_chunks(void *e,double tolerance);
37 uint8_t matocsserv_has_avail_space(void *e);
38 double matocsserv_replication_write_counter(void *e,uint32_t now);
39 double matocsserv_replication_read_counter(void *e,uint32_t now);
40 //uint16_t matocsserv_replication_read_counter(void *e);
41 //uint16_t matocsserv_replication_write_counter(void *e);
42 uint16_t matocsserv_deletion_counter(void *e);
43 int matocsserv_send_replicatechunk(void *e,uint64_t chunkid,uint32_t version,void *src);
44 int matocsserv_send_replicatechunk_xor(void *e,uint64_t chunkid,uint32_t version,uint8_t cnt,void **src,uint64_t *srcchunkid,uint32_t *srcversion);
45 int matocsserv_send_chunkop(void *e,uint64_t chunkid,uint32_t version,uint32_t newversion,uint64_t copychunkid,uint32_t copyversion,uint32_t leng);
46 int matocsserv_send_deletechunk(void *e,uint64_t chunkid,uint32_t version);
47 int matocsserv_send_createchunk(void *e,uint64_t chunkid,uint32_t version);
48 int matocsserv_send_setchunkversion(void *e,uint64_t chunkid,uint32_t version,uint32_t oldversion);
49 int matocsserv_send_duplicatechunk(void *e,uint64_t chunkid,uint32_t version,uint64_t oldchunkid,uint32_t oldversion);
50 int matocsserv_send_truncatechunk(void *e,uint64_t chunkid,uint32_t length,uint32_t version,uint32_t oldversion);
51 int matocsserv_send_duptruncchunk(void *e,uint64_t chunkid,uint32_t version,uint64_t oldchunkid,uint32_t oldversion,uint32_t length);
52 uint8_t matocsserv_isvalid(void *e);
53 void matocsserv_disconnection_finished(void *e);
54 int matocsserv_no_more_pending_jobs(void);
55 void matocsserv_disconnect_all(void);
56 int matocsserv_init(void);
57 
58 #endif
59