blob: d3a3375f0adcd3c2657f56eb36fb0c09abe83a27 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//! This module defines the protocol between `virtio-wayland` and `virtio-gpu` for sharing resources
//! that are backed by file descriptors.
use std::fs::File;
use std::io::Result;
use msg_on_socket_derive::MsgOnSocket;
use msg_socket::MsgSocket;
#[derive(MsgOnSocket)]
pub enum ResourceRequest {
GetResource { id: u32 },
}
#[derive(MsgOnSocket)]
pub enum ResourceResponse {
Resource(File),
Invalid,
}
pub type ResourceRequestSocket = MsgSocket<ResourceRequest, ResourceResponse>;
pub type ResourceResponseSocket = MsgSocket<ResourceResponse, ResourceRequest>;
pub fn pair() -> Result<(ResourceRequestSocket, ResourceResponseSocket)> {
msg_socket::pair()
}