diff options
author | Yaniv Kamay <ykamay@redhat.com> | 2009-09-19 21:25:46 +0300 |
---|---|---|
committer | Yaniv Kamay <ykamay@redhat.com> | 2009-10-14 15:06:41 +0200 |
commit | c1b79eb035fa158fb2ac3bc8e559809611070016 (patch) | |
tree | 3348dd749a700dedf87c9b16fe8be77c62928df8 /server/reds.h | |
download | spice-c1b79eb035fa158fb2ac3bc8e559809611070016.tar.gz spice-c1b79eb035fa158fb2ac3bc8e559809611070016.tar.xz spice-c1b79eb035fa158fb2ac3bc8e559809611070016.zip |
fresh start
Diffstat (limited to 'server/reds.h')
-rw-r--r-- | server/reds.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/server/reds.h b/server/reds.h new file mode 100644 index 00000000..ce09e5b6 --- /dev/null +++ b/server/reds.h @@ -0,0 +1,70 @@ +/* + Copyright (C) 2009 Red Hat, Inc. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _H_REDS +#define _H_REDS + +#include <stdint.h> +#include <openssl/ssl.h> +#include <sys/uio.h> + +typedef struct RedsStreamContext { + void *ctx; + + int socket; + + SSL *ssl; + + int (*cb_write)(void *, void *, int); + int (*cb_read)(void *, void *, int); + + int (*cb_readv)(void *, const struct iovec *vector, int count); + int (*cb_writev)(void *, const struct iovec *vector, int count); + int (*cb_free)(struct RedsStreamContext *); +} RedsStreamContext; + +typedef struct Channel { + struct Channel *next; + uint32_t type; + uint32_t id; + int num_common_caps; + uint32_t *common_caps; + int num_caps; + uint32_t *caps; + void (*link)(struct Channel *, RedsStreamContext *peer, int migration, int num_common_caps, + uint32_t *common_caps, int num_caps, uint32_t *caps); + void (*shutdown)(struct Channel *); + void (*migrate)(struct Channel *); + void *data; +} Channel; + +void reds_desable_mm_timer(); +void reds_enable_mm_timer(); +void reds_update_mm_timer(uint32_t mm_time); +uint32_t reds_get_mm_time(); +void reds_set_client_mouse_allowed(int is_client_mouse_allowed, + int x_res, int y_res); +void reds_register_channel(Channel *channel); +void reds_unregister_channel(Channel *channel); + +extern struct CoreInterface *core; +extern uint64_t bitrate_per_sec; + +#define IS_LOW_BANDWIDTH() (bitrate_per_sec < 10 * 1024 * 1024) + +#endif + |