mirror of https://gitee.com/openkylin/qemu.git
io: Introduce a qio_channel_set_feature() helper
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 <felipe@nutanix.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
e413ae0c04
commit
d8d3c7cc67
|
@ -148,6 +148,16 @@ struct QIOChannelClass {
|
|||
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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue