/* Copyright (c) 2013-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "array.h"
#include "connection.h"
#include "ostream.h"
#include "str.h"
#include "strescape.h"
#include "wildcard-match.h"
#include "master-service.h"
#include "replicator-brain.h"
#include "replicator-queue.h"
#include "replicator-settings.h"
#include "dsync-client.h"
#include "doveadm-connection.h"
#include <unistd.h>
#define REPLICATOR_DOVEADM_MINOR_VERSION 0
struct doveadm_connection {
};
{
pending_failed_count = 0; waiting_failed_count = 0;
user_count = 0;
if (user->last_sync_failed)
else
} else {
if (user->last_sync_failed)
}
user_count++;
}
}
return 0;
}
static int
{
return client_input_status_overview(client);
continue;
str_truncate(str, 0);
(long long)user->last_fast_sync,
(long long)user->last_full_sync,
(long long)user->last_successful_sync);
}
return 0;
}
static int
{
const char *username;
switch (dsync_client_get_type(*clientp)) {
case DSYNC_TYPE_FULL:
break;
case DSYNC_TYPE_NORMAL:
break;
case DSYNC_TYPE_INCREMENTAL:
break;
}
} else {
}
}
return 0;
}
static int
{
const char *usermask;
unsigned int match_count;
bool full;
/* <priority> <flags> <username>|<mask> */
return -1;
}
return 0;
}
if (full)
return 0;
}
match_count = 0;
continue;
if (full)
match_count++;
}
return 0;
}
static int
{
/* <usermask> */
return -1;
}
} else {
args[0], ioloop_time);
}
return 0;
}
static int
{
/* <username> */
return -1;
}
else {
}
return 0;
}
static int
{
/* <username> <flags> <state> */
return -1;
}
}
return 0;
}
{
return 0;
}
args++;
return client_input_status_dsyncs(client);
return -1;
}
{
}
{
}
.service_name_in = "replicator-doveadm-client",
.service_name_out = "replicator-doveadm-server",
};
};
void doveadm_connections_init(void)
{
}
void doveadm_connections_deinit(void)
{
}