[Spice-devel] [PATCH spice-server 04/10] reds: move handle_channel_event logic from main_dispatcher to reds
Marc-André Lureau
marcandre.lureau at gmail.com
Wed May 8 07:46:40 PDT 2013
ack (would be nice to describe the motivation, although I guess it is to
avoid code duplication)
On Wed, May 8, 2013 at 4:06 PM, Yonit Halperin <yhalperi at redhat.com> wrote:
> ---
> server/main_dispatcher.c | 5 +----
> server/reds.c | 19 ++++++++++++++-----
> server/reds.h | 4 ++++
> 3 files changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/server/main_dispatcher.c b/server/main_dispatcher.c
> index 8402402..92b0791 100644
> --- a/server/main_dispatcher.c
> +++ b/server/main_dispatcher.c
> @@ -64,10 +64,7 @@ static void main_dispatcher_self_handle_channel_event(
> int event,
> SpiceChannelEventInfo
> *info)
> {
> - main_dispatcher.core->channel_event(event, info);
> - if (event == SPICE_CHANNEL_EVENT_DISCONNECTED) {
> - free(info);
> - }
> + reds_handle_channel_event(event, info);
> }
>
> static void main_dispatcher_handle_channel_event(void *opaque,
> diff --git a/server/reds.c b/server/reds.c
> index b8db905..a378f80 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -189,11 +189,20 @@ static ChannelSecurityOptions
> *find_channel_security(int id)
> return now;
> }
>
> -static void reds_stream_channel_event(RedsStream *s, int event)
> +static void reds_stream_push_channel_event(RedsStream *s, int event)
> +{
> + main_dispatcher_channel_event(event, s->info);
> +}
> +
> +void reds_handle_channel_event(int event, SpiceChannelEventInfo *info)
> {
> if (core->base.minor_version < 3 || core->channel_event == NULL)
> return;
> - main_dispatcher_channel_event(event, s->info);
> +
> + core->channel_event(event, info);
> + if (event == SPICE_CHANNEL_EVENT_DISCONNECTED) {
> + free(info);
> + }
> }
>
> static ssize_t stream_write_cb(RedsStream *s, const void *buf, size_t
> size)
> @@ -1524,7 +1533,7 @@ static void reds_info_new_channel(RedLinkInfo *link,
> int connection_id)
> link->stream->info->connection_id = connection_id;
> link->stream->info->type = link->link_mess->channel_type;
> link->stream->info->id = link->link_mess->channel_id;
> - reds_stream_channel_event(link->stream,
> SPICE_CHANNEL_EVENT_INITIALIZED);
> + reds_stream_push_channel_event(link->stream,
> SPICE_CHANNEL_EVENT_INITIALIZED);
> }
>
> static void reds_send_link_result(RedLinkInfo *link, uint32_t error)
> @@ -2845,7 +2854,7 @@ static RedLinkInfo *reds_init_client_connection(int
> socket)
> getpeername(stream->socket, (struct
> sockaddr*)(&stream->info->paddr_ext),
> &stream->info->plen_ext);
>
> - reds_stream_channel_event(stream, SPICE_CHANNEL_EVENT_CONNECTED);
> + reds_stream_push_channel_event(stream, SPICE_CHANNEL_EVENT_CONNECTED);
>
> openssl_init(link);
>
> @@ -4573,7 +4582,7 @@ void reds_stream_free(RedsStream *s)
> return;
> }
>
> - reds_stream_channel_event(s, SPICE_CHANNEL_EVENT_DISCONNECTED);
> + reds_stream_push_channel_event(s, SPICE_CHANNEL_EVENT_DISCONNECTED);
>
> #if HAVE_SASL
> if (s->sasl.conn) {
> diff --git a/server/reds.h b/server/reds.h
> index 59f13ce..c5c557d 100644
> --- a/server/reds.h
> +++ b/server/reds.h
> @@ -111,11 +111,15 @@ typedef struct RedsMigSpice {
> int sport;
> } RedsMigSpice;
>
> +/* any thread */
> ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte);
> ssize_t reds_stream_write(RedsStream *s, const void *buf, size_t nbyte);
> ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int
> iovcnt);
> void reds_stream_free(RedsStream *s);
>
> +/* main thread only */
> +void reds_handle_channel_event(int event, SpiceChannelEventInfo *info);
> +
> void reds_disable_mm_timer(void);
> void reds_enable_mm_timer(void);
> void reds_update_mm_timer(uint32_t mm_time);
> --
> 1.8.1.4
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>
--
Marc-André Lureau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20130508/40fcf192/attachment.html>
More information about the Spice-devel
mailing list