Comments (6)
This is a bare binding. And all handles except reqs use the same metatable.
from luv.
This is a bare binding, but I think this particular sugar is low enough
overhead to be worth it. It does provide value in structural typing that
is not available through the C style interface.
On Wed, Nov 5, 2014 at 7:10 PM, imzyxwvu [email protected] wrote:
This is a bare binding. And all APIs use the same metatable.
—
Reply to this email directly or view it on GitHub
#88 (comment).
from luv.
This sugar is easy to be achieved by setting the uv table as the __index of the handle metatable. But it won't be server:bind. It will be server:tcp_bind instead because the uv table is all the APIs instead of a subset. Because there is only one metatable we cannot set it a subset for every kind of handle.
I came up with a workaround just now: we can add another sugar uv.bind. It checks the handle type and automatically selects luv_tcp_bind, luv_udp_bind or etc.
from luv.
I came up with a workaround just now: we can add another sugar uv.bind. It checks the handle type and automatically selects luv_tcp_bind, luv_udp_bind or etc.
Well, that would introduce additional overhead. But I think anyway the planned implementation would be to have separate userdata and metatables for each handle type. The member functions in the __index
hook would then of course be shortened as appropriate.
from luv.
Well, that would introduce additional overhead. But I think anyway the planned implementation would be to have separate userdata and metatables for each handle type. The member functions in the __index hook would then of course be shortened as appropriate.
It is because some handles are in different types, but they share some APIs. For example, TTY, TCP and Pipe are different types, but they share uv.read, uv.write and etc.
In fact checking handle type by (uv_handle_t*)->type is really a simple job. It won't introduce additional overhead.
from luv.
Implemented in #96
from luv.
Related Issues (20)
- Change `get_constrained_memory` binding to return `nil` instead of `0`
- `cpu_info` binding might not handle `model` correctly HOT 2
- Release 1.45.0 checklist. HOT 1
- Add `fs_access` test(s)
- request bind v1.46.0 new features
- fs_scandir_next() sometimes returns name but no type HOT 6
- track issues in neovim related with luv HOT 4
- CI failing for LuaJIT v2.1 branch
- process creation segfault HOT 2
- How to pass command line string to uv.spawn? HOT 4
- Do I have to use `uv.run()` to wait async reading file with `fs_read` API? HOT 2
- Question: Is `shutdown` and `close` (use new_pipe with spawn) sync or async? HOT 1
- Question: the arrival order of uv.spawn `on_exit` and `data == nil` in `read_start` callback on Windows 10? HOT 2
- Why udp_recv_start callback call twice? HOT 2
- `tty normal` normal tests fails for me on Fedora mockbuild HOT 4
- Error loading module luv HOT 3
- Unable to send handles with uv_write2
- UBSan is detecting problems but not failing the CI
- Importance of case for signal names (and other names) HOT 1
- luv_handle_gc segfault (from neovim) HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from luv.