[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v1 03/11] io: Introduce a qio_channel_set_feature() h
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PULL v1 03/11] io: Introduce a qio_channel_set_feature() helper |
Date: |
Thu, 27 Oct 2016 14:57:30 +0200 |
From: Felipe Franciosi <address@hidden>
Testing QIOChannel feature support can be done with a helper called
qio_channel_has_feature(). Setting feature support, however, was
done manually with a logical OR. This patch introduces a new helper
called qio_channel_set_feature() and makes use of it where applicable.
Signed-off-by: Felipe Franciosi <address@hidden>
Signed-off-by: Daniel P. Berrange <address@hidden>
---
include/io/channel.h | 10 ++++++++++
io/channel-socket.c | 9 +++++----
io/channel-tls.c | 2 +-
io/channel-websock.c | 2 +-
io/channel.c | 7 +++++++
5 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/include/io/channel.h b/include/io/channel.h
index 5368604..cf1c622 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -149,6 +149,16 @@ bool qio_channel_has_feature(QIOChannel *ioc,
QIOChannelFeature feature);
/**
+ * qio_channel_set_feature:
+ * @ioc: the channel object
+ * @feature: the feature to set support for
+ *
+ * Add channel support for the feature named in @feature.
+ */
+void qio_channel_set_feature(QIOChannel *ioc,
+ QIOChannelFeature feature);
+
+/**
* qio_channel_readv_full:
* @ioc: the channel object
* @iov: the array of memory regions to read data into
diff --git a/io/channel-socket.c b/io/channel-socket.c
index 8fc6e5a..75cbca3 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -55,7 +55,7 @@ qio_channel_socket_new(void)
sioc->fd = -1;
ioc = QIO_CHANNEL(sioc);
- ioc->features |= (1 << QIO_CHANNEL_FEATURE_SHUTDOWN);
+ qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_SHUTDOWN);
#ifdef WIN32
ioc->event = CreateEvent(NULL, FALSE, FALSE, NULL);
@@ -107,12 +107,12 @@ qio_channel_socket_set_fd(QIOChannelSocket *sioc,
#ifndef WIN32
if (sioc->localAddr.ss_family == AF_UNIX) {
QIOChannel *ioc = QIO_CHANNEL(sioc);
- ioc->features |= (1 << QIO_CHANNEL_FEATURE_FD_PASS);
+ qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_FD_PASS);
}
#endif /* WIN32 */
if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, &val, &len) == 0 && val) {
QIOChannel *ioc = QIO_CHANNEL(sioc);
- ioc->features |= (1 << QIO_CHANNEL_FEATURE_LISTEN);
+ qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_LISTEN);
}
return 0;
@@ -380,7 +380,8 @@ qio_channel_socket_accept(QIOChannelSocket *ioc,
#ifndef WIN32
if (cioc->localAddr.ss_family == AF_UNIX) {
- QIO_CHANNEL(cioc)->features |= (1 << QIO_CHANNEL_FEATURE_FD_PASS);
+ QIOChannel *ioc_local = QIO_CHANNEL(cioc);
+ qio_channel_set_feature(ioc_local, QIO_CHANNEL_FEATURE_FD_PASS);
}
#endif /* WIN32 */
diff --git a/io/channel-tls.c b/io/channel-tls.c
index f7bb0e3..d24dc8c 100644
--- a/io/channel-tls.c
+++ b/io/channel-tls.c
@@ -112,7 +112,7 @@ qio_channel_tls_new_client(QIOChannel *master,
tioc->master = master;
if (qio_channel_has_feature(master, QIO_CHANNEL_FEATURE_SHUTDOWN)) {
- ioc->features |= (1 << QIO_CHANNEL_FEATURE_SHUTDOWN);
+ qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_SHUTDOWN);
}
object_ref(OBJECT(master));
diff --git a/io/channel-websock.c b/io/channel-websock.c
index 75df03e..f45bced 100644
--- a/io/channel-websock.c
+++ b/io/channel-websock.c
@@ -498,7 +498,7 @@ qio_channel_websock_new_server(QIOChannel *master)
wioc->master = master;
if (qio_channel_has_feature(master, QIO_CHANNEL_FEATURE_SHUTDOWN)) {
- ioc->features |= (1 << QIO_CHANNEL_FEATURE_SHUTDOWN);
+ qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_SHUTDOWN);
}
object_ref(OBJECT(master));
diff --git a/io/channel.c b/io/channel.c
index e50325c..d1f1ae5 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -30,6 +30,13 @@ bool qio_channel_has_feature(QIOChannel *ioc,
}
+void qio_channel_set_feature(QIOChannel *ioc,
+ QIOChannelFeature feature)
+{
+ ioc->features |= (1 << feature);
+}
+
+
ssize_t qio_channel_readv_full(QIOChannel *ioc,
const struct iovec *iov,
size_t niov,
--
2.9.3
- [Qemu-devel] [PULL v1 00/11] Merge qio 2016/10/27, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 01/11] io: Fix double shift usages on QIOChannel features, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 02/11] io: Use qio_channel_has_feature() where applicable, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 04/11] io: set LISTEN flag explicitly for listen sockets, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 06/11] io: add ability to set a name for IO channels, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 03/11] io: Introduce a qio_channel_set_feature() helper,
Daniel P. Berrange <=
- [Qemu-devel] [PULL v1 07/11] nbd: set name for all I/O channels created, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 05/11] io: Add a QIOChannelSocket cleanup test, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 08/11] char: set name for all I/O channels created, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 10/11] vnc: set name for all I/O channels created, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 11/11] main: set names for main loop sources created, Daniel P. Berrange, 2016/10/27
- [Qemu-devel] [PULL v1 09/11] migration: set name for all I/O channels created, Daniel P. Berrange, 2016/10/27
- Re: [Qemu-devel] [PULL v1 00/11] Merge qio 2016/10/27, Peter Maydell, 2016/10/27