/include/osv/socket.hh
C++ Header | 46 lines | 32 code | 8 blank | 6 comment | 0 complexity | 72a9be4531699407f2d460095d32dc41 MD5 | raw file
Possible License(s): BSD-3-Clause, 0BSD, MPL-2.0-no-copyleft-exception
- /*
- * Copyright (C) 2013 Cloudius Systems, Ltd.
- *
- * This work is open source software, licensed under the terms of the
- * BSD license as described in the LICENSE file in the top-level directory.
- */
- #ifndef SOCKET_HH_
- #define SOCKET_HH_
- #include <osv/file.h>
- #include <memory>
- struct socket;
- struct socket_closer;
- extern "C" int soclose(socket* so);
- struct socket_closer {
- void operator()(socket* so) { soclose(so); }
- };
- using socketref = std::unique_ptr<socket, socket_closer>;
- class socket_file final : public file {
- public:
- socket_file(unsigned flags, socket* so);
- socket_file(unsigned flags, socketref&& so);
- virtual int read(struct uio *uio, int flags) override;
- virtual int write(struct uio *uio, int flags) override;
- virtual int truncate(off_t len) override;
- virtual int ioctl(u_long com, void *data) override;
- virtual int poll(int events) override;
- virtual int poll_sync(struct pollfd& pfd, timeout_t timeout) override;
- virtual int stat(struct stat* buf) override;
- virtual int close() override;
- virtual int chmod(mode_t mode) override;
- virtual void epoll_add(epoll_ptr ep) override;
- virtual void epoll_del(epoll_ptr ep) override;
- virtual void poll_install(pollreq& pr) override;
- virtual void poll_uninstall(pollreq& pr) override;
- int bsd_ioctl(u_long cmd, void* data);
- socket* so;
- };
- #endif /* SOCKET_HH_ */