Skip to content

Commit

Permalink
src: remove redundant code for uv_handle_type
Browse files Browse the repository at this point in the history
PR-URL: #49061
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Deokjin Kim <deokjin81.kim@gmail.com>
  • Loading branch information
Jungku Lee authored and RafaelGSS committed Aug 17, 2023
1 parent 3d942d9 commit e5b0dfa
Showing 1 changed file with 18 additions and 48 deletions.
66 changes: 18 additions & 48 deletions src/node_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -284,74 +284,44 @@ void WeakReference::DecRef(const FunctionCallbackInfo<Value>& args) {
v8::Number::New(args.GetIsolate(), weak_ref->reference_count_));
}

static void GuessHandleType(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
int fd;
if (!args[0]->Int32Value(env->context()).To(&fd)) return;
CHECK_GE(fd, 0);

uv_handle_type t = uv_guess_handle(fd);
static uint32_t GetUVHandleTypeCode(const uv_handle_type type) {
// TODO(anonrig): We can use an enum here and then create the array in the
// binding, which will remove the hard-coding in C++ and JS land.
uint32_t type{0};

// Currently, the return type of this function corresponds to the index of the
// array defined in the JS land. This is done as an optimization to reduce the
// string serialization overhead.
switch (t) {
switch (type) {
case UV_TCP:
type = 0;
break;
return 0;
case UV_TTY:
type = 1;
break;
return 1;
case UV_UDP:
type = 2;
break;
return 2;
case UV_FILE:
type = 3;
break;
return 3;
case UV_NAMED_PIPE:
type = 4;
break;
return 4;
case UV_UNKNOWN_HANDLE:
type = 5;
break;
return 5;
default:
ABORT();
}
}

static void GuessHandleType(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
int fd;
if (!args[0]->Int32Value(env->context()).To(&fd)) return;
CHECK_GE(fd, 0);

args.GetReturnValue().Set(type);
uv_handle_type t = uv_guess_handle(fd);
args.GetReturnValue().Set(GetUVHandleTypeCode(t));
}

static uint32_t FastGuessHandleType(Local<Value> receiver, const uint32_t fd) {
uv_handle_type t = uv_guess_handle(fd);
uint32_t type{0};

switch (t) {
case UV_TCP:
type = 0;
break;
case UV_TTY:
type = 1;
break;
case UV_UDP:
type = 2;
break;
case UV_FILE:
type = 3;
break;
case UV_NAMED_PIPE:
type = 4;
break;
case UV_UNKNOWN_HANDLE:
type = 5;
break;
default:
ABORT();
}

return type;
return GetUVHandleTypeCode(t);
}

CFunction fast_guess_handle_type_(CFunction::Make(FastGuessHandleType));
Expand Down

0 comments on commit e5b0dfa

Please sign in to comment.