@canboat/canboatjs 3.16.3 → 3.16.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/toPgn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"toPgn.js","sourceRoot":"","sources":["../lib/toPgn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toPgn.js","sourceRoot":"","sources":["../lib/toPgn.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  #include <napi.h>
2
+ #include <uv.h>
2
3
  #include <sys/socket.h>
3
4
  #include <sys/ioctl.h>
4
5
  #include <net/if.h>
@@ -9,33 +10,25 @@
9
10
  #include <cstring>
10
11
  #include <cerrno>
11
12
 
12
- static Napi::Value OpenCanSocketImpl(const Napi::CallbackInfo& info, bool nonblock) {
13
- Napi::Env env = info.Env();
14
-
15
- if (info.Length() < 1 || !info[0].IsString()) {
16
- Napi::TypeError::New(env, "Interface name required")
17
- .ThrowAsJavaScriptException();
18
- return env.Undefined();
19
- }
20
-
21
- std::string ifname = info[0].As<Napi::String>().Utf8Value();
22
-
13
+ // Open a PF_CAN raw socket bound to the given interface in non-blocking mode.
14
+ // Both reads and writes use non-blocking I/O so the libuv threadpool is never
15
+ // occupied by a blocking syscall — this allows process.exit() to terminate
16
+ // cleanly even when no CAN traffic is flowing.
17
+ static int OpenAndBindCanSocket(const std::string& ifname, std::string& err) {
23
18
  int fd = socket(PF_CAN, SOCK_RAW, CAN_RAW);
24
19
  if (fd < 0) {
25
- Napi::Error::New(env, std::string("socket(PF_CAN): ") + strerror(errno))
26
- .ThrowAsJavaScriptException();
27
- return env.Undefined();
20
+ err = std::string("socket(PF_CAN): ") + strerror(errno);
21
+ return -1;
28
22
  }
29
23
 
30
24
  struct ifreq ifr;
31
25
  std::memset(&ifr, 0, sizeof(ifr));
32
26
  std::strncpy(ifr.ifr_name, ifname.c_str(), IFNAMSIZ - 1);
33
27
  if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
34
- std::string err = std::string("ioctl(SIOCGIFINDEX) for '") + ifname +
35
- "': " + strerror(errno);
28
+ err = std::string("ioctl(SIOCGIFINDEX) for '") + ifname +
29
+ "': " + strerror(errno);
36
30
  close(fd);
37
- Napi::Error::New(env, err).ThrowAsJavaScriptException();
38
- return env.Undefined();
31
+ return -1;
39
32
  }
40
33
 
41
34
  struct sockaddr_can addr;
@@ -43,81 +36,223 @@ static Napi::Value OpenCanSocketImpl(const Napi::CallbackInfo& info, bool nonblo
43
36
  addr.can_family = AF_CAN;
44
37
  addr.can_ifindex = ifr.ifr_ifindex;
45
38
  if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
46
- std::string err =
47
- std::string("bind() to '") + ifname + "': " + strerror(errno);
39
+ err = std::string("bind() to '") + ifname + "': " + strerror(errno);
48
40
  close(fd);
49
- Napi::Error::New(env, err).ThrowAsJavaScriptException();
50
- return env.Undefined();
41
+ return -1;
51
42
  }
52
43
 
53
- if (nonblock) {
54
- // Disable reception this socket is write-only. An empty filter array
55
- // tells the kernel not to deliver any incoming frames, avoiding wasted
56
- // copies into a receive buffer nobody reads.
57
- if (setsockopt(fd, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0) < 0) {
58
- std::string err =
59
- std::string("setsockopt(CAN_RAW_FILTER) for '") + ifname + "': " + strerror(errno);
60
- close(fd);
61
- Napi::Error::New(env, err).ThrowAsJavaScriptException();
62
- return env.Undefined();
63
- }
44
+ if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
45
+ err = std::string("fcntl(O_NONBLOCK) for '") + ifname +
46
+ "': " + strerror(errno);
47
+ close(fd);
48
+ return -1;
49
+ }
64
50
 
65
- // Disable local loopback — frames we send should not be echoed back
66
- // to the read socket as if they came from the bus.
67
- int loopback = 0;
68
- if (setsockopt(fd, SOL_CAN_RAW, CAN_RAW_LOOPBACK, &loopback, sizeof(loopback)) < 0) {
69
- std::string err =
70
- std::string("setsockopt(CAN_RAW_LOOPBACK) for '") + ifname + "': " + strerror(errno);
71
- close(fd);
72
- Napi::Error::New(env, err).ThrowAsJavaScriptException();
73
- return env.Undefined();
74
- }
51
+ return fd;
52
+ }
75
53
 
76
- if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
77
- std::string err =
78
- std::string("fcntl(O_NONBLOCK) for '") + ifname + "': " + strerror(errno);
79
- close(fd);
80
- Napi::Error::New(env, err).ThrowAsJavaScriptException();
81
- return env.Undefined();
82
- }
54
+ Napi::Value OpenCanReadSocket(const Napi::CallbackInfo& info) {
55
+ Napi::Env env = info.Env();
56
+ if (info.Length() < 1 || !info[0].IsString()) {
57
+ Napi::TypeError::New(env, "Interface name required")
58
+ .ThrowAsJavaScriptException();
59
+ return env.Undefined();
60
+ }
61
+ std::string ifname = info[0].As<Napi::String>().Utf8Value();
62
+ std::string err;
63
+ int fd = OpenAndBindCanSocket(ifname, err);
64
+ if (fd < 0) {
65
+ Napi::Error::New(env, err).ThrowAsJavaScriptException();
66
+ return env.Undefined();
83
67
  }
84
-
85
68
  return Napi::Number::New(env, fd);
86
69
  }
87
70
 
88
- Napi::Value OpenCanSocket(const Napi::CallbackInfo& info) {
89
- return OpenCanSocketImpl(info, false);
90
- }
71
+ Napi::Value OpenCanWriteSocket(const Napi::CallbackInfo& info) {
72
+ Napi::Env env = info.Env();
73
+ if (info.Length() < 1 || !info[0].IsString()) {
74
+ Napi::TypeError::New(env, "Interface name required")
75
+ .ThrowAsJavaScriptException();
76
+ return env.Undefined();
77
+ }
78
+ std::string ifname = info[0].As<Napi::String>().Utf8Value();
79
+ std::string err;
80
+ int fd = OpenAndBindCanSocket(ifname, err);
81
+ if (fd < 0) {
82
+ Napi::Error::New(env, err).ThrowAsJavaScriptException();
83
+ return env.Undefined();
84
+ }
85
+
86
+ // Disable reception on the write-only socket — empty filter array tells
87
+ // the kernel not to deliver incoming frames to this socket's receive
88
+ // buffer, avoiding wasted copies.
89
+ if (setsockopt(fd, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0) < 0) {
90
+ std::string msg = std::string("setsockopt(CAN_RAW_FILTER) for '") +
91
+ ifname + "': " + strerror(errno);
92
+ close(fd);
93
+ Napi::Error::New(env, msg).ThrowAsJavaScriptException();
94
+ return env.Undefined();
95
+ }
96
+
97
+ // NOTE: CAN_RAW_LOOPBACK is left at its default (enabled). On virtual CAN
98
+ // (vcan) interfaces the kernel uses loopback to distribute frames between
99
+ // sockets bound to the same interface — disabling it would cause write()
100
+ // to succeed silently while no other socket (including candump or peers
101
+ // on the bus) ever sees the frame.
91
102
 
92
- Napi::Value OpenCanSocketNonBlock(const Napi::CallbackInfo& info) {
93
- return OpenCanSocketImpl(info, true);
103
+ return Napi::Number::New(env, fd);
94
104
  }
95
105
 
96
106
  Napi::Value WriteCanFrame(const Napi::CallbackInfo& info) {
97
107
  Napi::Env env = info.Env();
98
-
99
108
  if (info.Length() < 2 || !info[0].IsNumber() || !info[1].IsBuffer()) {
100
109
  Napi::TypeError::New(env, "writeCanFrame(fd, buffer) expected")
101
110
  .ThrowAsJavaScriptException();
102
111
  return env.Undefined();
103
112
  }
104
-
105
113
  int fd = info[0].As<Napi::Number>().Int32Value();
106
114
  Napi::Buffer<uint8_t> buf = info[1].As<Napi::Buffer<uint8_t>>();
107
-
108
115
  ssize_t written = write(fd, buf.Data(), buf.Length());
109
-
110
116
  if (written < 0) {
111
117
  return Napi::Number::New(env, -errno);
112
118
  }
113
-
114
119
  return Napi::Number::New(env, static_cast<int>(written));
115
120
  }
116
121
 
122
+ // Drain all currently-readable frames from the non-blocking fd into an
123
+ // array of Buffers, returned to JS. Returns an empty array if no frames
124
+ // are available (EAGAIN). This is called from the JS-side poll callback
125
+ // when the fd becomes readable.
126
+ Napi::Value ReadCanFrames(const Napi::CallbackInfo& info) {
127
+ Napi::Env env = info.Env();
128
+ if (info.Length() < 1 || !info[0].IsNumber()) {
129
+ Napi::TypeError::New(env, "readCanFrames(fd) expected")
130
+ .ThrowAsJavaScriptException();
131
+ return env.Undefined();
132
+ }
133
+ int fd = info[0].As<Napi::Number>().Int32Value();
134
+
135
+ Napi::Array out = Napi::Array::New(env);
136
+ uint32_t idx = 0;
137
+ uint8_t buf[sizeof(struct can_frame)];
138
+
139
+ while (true) {
140
+ ssize_t n = read(fd, buf, sizeof(buf));
141
+ if (n < 0) {
142
+ if (errno == EAGAIN || errno == EWOULDBLOCK) {
143
+ break;
144
+ }
145
+ Napi::Error::New(env, std::string("read: ") + strerror(errno))
146
+ .ThrowAsJavaScriptException();
147
+ return env.Undefined();
148
+ }
149
+ if (n == 0) {
150
+ break;
151
+ }
152
+ out.Set(idx++, Napi::Buffer<uint8_t>::Copy(env, buf, n));
153
+ }
154
+
155
+ return out;
156
+ }
157
+
158
+ // CanPoller: wraps a uv_poll_t on a CAN read fd, calls a JS callback when
159
+ // frames are readable. Closing the poller is synchronous and prevents any
160
+ // further callbacks; the underlying fd is the caller's responsibility.
161
+ class CanPoller : public Napi::ObjectWrap<CanPoller> {
162
+ public:
163
+ static Napi::Object Init(Napi::Env env, Napi::Object exports) {
164
+ Napi::Function func = DefineClass(
165
+ env, "CanPoller",
166
+ {InstanceMethod("close", &CanPoller::Close)});
167
+ exports.Set("CanPoller", func);
168
+ return exports;
169
+ }
170
+
171
+ CanPoller(const Napi::CallbackInfo& info) : Napi::ObjectWrap<CanPoller>(info) {
172
+ Napi::Env env = info.Env();
173
+ if (info.Length() < 2 || !info[0].IsNumber() || !info[1].IsFunction()) {
174
+ Napi::TypeError::New(env, "new CanPoller(fd, callback)")
175
+ .ThrowAsJavaScriptException();
176
+ return;
177
+ }
178
+ fd_ = info[0].As<Napi::Number>().Int32Value();
179
+ callback_.Reset(info[1].As<Napi::Function>(), 1);
180
+ closed_ = false;
181
+
182
+ uv_loop_t* loop = nullptr;
183
+ napi_get_uv_event_loop(env, &loop);
184
+ poll_ = new uv_poll_t;
185
+ poll_->data = this;
186
+ int rc = uv_poll_init(loop, poll_, fd_);
187
+ if (rc < 0) {
188
+ delete poll_;
189
+ poll_ = nullptr;
190
+ Napi::Error::New(env,
191
+ std::string("uv_poll_init: ") + uv_strerror(rc))
192
+ .ThrowAsJavaScriptException();
193
+ return;
194
+ }
195
+ rc = uv_poll_start(poll_, UV_READABLE, &CanPoller::OnPoll);
196
+ if (rc < 0) {
197
+ uv_close(reinterpret_cast<uv_handle_t*>(poll_), &CanPoller::OnClose);
198
+ poll_ = nullptr;
199
+ Napi::Error::New(env,
200
+ std::string("uv_poll_start: ") + uv_strerror(rc))
201
+ .ThrowAsJavaScriptException();
202
+ return;
203
+ }
204
+ }
205
+
206
+ ~CanPoller() {
207
+ // poll_ should already be null after Close(); if not, the object was
208
+ // GC'd without explicit close — schedule a libuv close to clean up.
209
+ if (poll_ != nullptr && !closed_) {
210
+ closed_ = true;
211
+ uv_poll_stop(poll_);
212
+ uv_close(reinterpret_cast<uv_handle_t*>(poll_), &CanPoller::OnClose);
213
+ poll_ = nullptr;
214
+ }
215
+ }
216
+
217
+ private:
218
+ static void OnPoll(uv_poll_t* handle, int status, int events) {
219
+ CanPoller* self = static_cast<CanPoller*>(handle->data);
220
+ if (self->closed_ || status < 0 || !(events & UV_READABLE)) {
221
+ return;
222
+ }
223
+ Napi::Env env = self->callback_.Env();
224
+ Napi::HandleScope scope(env);
225
+ self->callback_.Call({});
226
+ }
227
+
228
+ static void OnClose(uv_handle_t* handle) {
229
+ delete reinterpret_cast<uv_poll_t*>(handle);
230
+ }
231
+
232
+ Napi::Value Close(const Napi::CallbackInfo& info) {
233
+ if (!closed_ && poll_ != nullptr) {
234
+ closed_ = true;
235
+ uv_poll_stop(poll_);
236
+ uv_close(reinterpret_cast<uv_handle_t*>(poll_), &CanPoller::OnClose);
237
+ poll_ = nullptr;
238
+ callback_.Reset();
239
+ }
240
+ return info.Env().Undefined();
241
+ }
242
+
243
+ int fd_ = -1;
244
+ uv_poll_t* poll_ = nullptr;
245
+ bool closed_ = true;
246
+ Napi::FunctionReference callback_;
247
+ };
248
+
117
249
  Napi::Object Init(Napi::Env env, Napi::Object exports) {
118
- exports.Set("openCanSocket", Napi::Function::New(env, OpenCanSocket));
119
- exports.Set("openCanSocketNonBlock", Napi::Function::New(env, OpenCanSocketNonBlock));
250
+ exports.Set("openCanReadSocket", Napi::Function::New(env, OpenCanReadSocket));
251
+ exports.Set("openCanWriteSocket",
252
+ Napi::Function::New(env, OpenCanWriteSocket));
120
253
  exports.Set("writeCanFrame", Napi::Function::New(env, WriteCanFrame));
254
+ exports.Set("readCanFrames", Napi::Function::New(env, ReadCanFrames));
255
+ CanPoller::Init(env, exports);
121
256
  return exports;
122
257
  }
123
258
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canboat/canboatjs",
3
- "version": "3.16.3",
3
+ "version": "3.16.4",
4
4
  "description": "Native javascript version of canboat",
5
5
  "main": "dist/index.js",
6
6
  "browser": "dist/browser.js",