mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 07:43:50 +00:00
Added descriptor helper methods
This commit is contained in:
@@ -2254,6 +2254,9 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx)
|
||||
// util-service-check, utility for correcting errors with meshServiceName initialization. Refer to modules/util-service-check.js
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('util-service-check', Buffer.from('eJy1Vttu2zgQfRegfxj4xVI3kdLsW4Mu4HVdVEhi70bOBkFdLGh5JBOVSS1JxTaK/vsOZamRb7kA7bxIFOdyzsxwxPCN6/RlsVY8mxs4Pzs/g0gYzKEvVSEVM1wK13GdK56g0DiDUsxQgZkj9AqW0KPeOYF/UGnShvPgDDyr0Km3Ov6F66xlCQu2BiENlBrJA9eQ8hwBVwkWBriARC6KnDORICy5mVdRah+B69zXHuTUMFJmpF7QKm2rATMWLZDMjSneheFyuQxYhTSQKgvzjZ4Or6L+YBgPTgmttbgVOWoNCv8ruSKa0zWwgsAkbEoQc7YEqYBlCmnPSAt2qbjhIjsBLVOzZApdZ8a1UXxamq08NdCIb1uBMsUEdHoxRHEH/uzFUXziOnfR+NPodgx3vZub3nAcDWIY3UB/NPwQjaPRkFYfoTe8h8to+OEEkLJEUXBVKIueIHKbQZxRumLErfCp3MDRBSY85QmRElnJMoRMPqASxAUKVAuubRU1gZu5Ts4X3FRNoPcZUZA3oU2e66SlSKwW1U38q1E9kEZ/jslXz3edb5uCPDAF+uLxXWEG75uMe12yPKVPNkPrrt/SK5iZt5YPLC9RV5ZZ8HeJan2Ja88uPl0O7oMrmbD8murNBfVkNx59HFMuB5PJqEABsSxVgj/c8xS8jb9Al9OvuNb+ZqOGbMXmzbOBua36Qe0dCytEYvvDzr4V3aZfJ+10wQTVRHX9oH4LMjTxZnMH62f+pSHSFp56OuD6Gj3f3989gKPCEiS51GRywKEVhaZUYjdbRxB83/+EucafAmbH984yYSaZg7fyn0x+y6h+/d5MjTCEW1GdeTrlKRczmjOLyikVv91bYdNZYbuxmjZ9VYvex+PB9WTSL5VCYfpSGCXzGM1kUtddv7Zhf02/2oP4E0lNJl34DfYaioyjBTX+XxStu9sBh8rtrZ4pd6VJALgo8Wl/NUP7CDQNUuN1A1zhHgw6YpVOjiIz8z/ePh+/9lyZfT77QsQPe9543+gF2jBl9B0Nea/b6fo+fNtGWE7t70Rk3lv/4tChq2HCezJQklKubczEZvblk2GvM57Rt/KLJluL1xMT7gX4KozPTLxGXjX5GjlQjJfGPWK6aXXEI4SPkD3g7PgAfZyF9tHwFmWeW6zViNR0LyMYTTcVOTM0bhaPP/mE0VXD/st/P+++e3S9kLMyR+o+ulMa2x2794RWMqYKWbOeYcrK3Dzl6cfVw7PnYxt1m13jtuLxPwpX1LY=', 'base64'));");
|
||||
|
||||
// descriptor helper methods, see modules/util-descriptors for details
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('util-descriptors', Buffer.from('eJztV91v2zYQfzfg/+EgtJDcKFKaPi2eCzhfm9fUHuJ0RZFkHS1RFlGZ1EgqtuF5f/uOspzIltPKD+tT+WKTvPvd7z54Iv1XzcaZSOeSjWMNx0fHr6HHNU3gTMhUSKKZ4M1Gs3HFAsoVDSHjIZWgYwrdlAT4U+y48AeVCqXh2DsCxwhYxZbVajcbc5HBhMyBCw2ZoojAFEQsoUBnAU01MA6BmKQJIzygMGU6zq0UGF6z8alAECNNUJigeIqzqCwGRBu2gCPWOj3x/el06pGcqSfk2E9Wcsq/6p1d9IcXh8jWaHzgCVUKJP07YxLdHM2BpEgmICOkmJApCAlkLCnuaWHITiXTjI9dUCLSUyJpsxEypSUbZXojTmtq6G9ZACNFOFjdIfSGFpx2h72h22x87N38OvhwAx+719fd/k3vYgiDazgb9M97N71BH2eX0O1/gne9/rkLFKOEVugslYY9UmQmgjTEcA0p3TAfiRUdldKARSxAp/g4I2MKY/FAJUdfIKVywpTJokJyYbORsAnTeRGoqkdo5JVvgtdsRBkPjBQG5oEkLHRazcZilQcdSzEFx+5j4lWWYlEV3ttwAKkUATL30oRoJDgxlbLcABxTPUgpP6cqkCzVQqoCe4WusFCCGJwK0Gq74GBGQDAIVoQZHKnQOnnaMOOBSAhiloTQWdeAY+cLnwtku+XRGQ0usWId2x8x7qvYduHWxp97Q7sMl2t6Soci0/gjEdW225vLgjt2SDRBkEdnnaAFi/xo5FoHHQg8LYZYM3zstNqwfNYQlfIriLneM5qMe6aUqWMZTxVmGw4jsMrJYSHOLPgHkJN9d8dtsP+ycUqmX+Dw0vy3rWeZPeLbC7uGEK6eX1x1LKtdUzrF4GgkfFtbA+vDYZ3XbfZz/7J9cMBaNfXq8sfR7Sg8h9p5wdxT1wKMTn1dFjmnt2/u4V/w/7w9Ovzp3q9LcD+Opdi9VC+V5ZrAu2Bs78F2nS+3dvhxLGuK1pVb+3Ffi4S1XJXrN5HvOJ0xjfW+G3NKmL5AAacKpuV8c2GxOTVDUp1JPKG/DQd9LyVSUWe7b3h48idOq7Vtf7lFh+Q9kLZq27yttKwtyJGk5Et7u3smjGezH71zR0klCnzjrb+jcfpR+N165/7dcL9u+x1652ZTMj3pBdujt+zZjf7fFvMN3B8N5nEtpBHJEr3VW6pwy/yC+HhGg0QoWr4cRmFXSjJ3IWGj4OkWappUZDoUz5KkgGIROEYKOqvl6p3RaKGEKne2ieAMLR0yHglsbHg/vWKjHk4c24BtpHIamweOMaK8hPIxvmnewlEpiov9s7pi/MTn8y+UU8mC95jgmCRI6QxDq2kfr+0P9HcpZvMVARWzCEsJK0HH28lZAxe676mORYhd3ES3Upy70rcjw/WLpnCplJodkKW/lcTljX/1zAgIN0/MiPEQinysVZfrQ1SkpSiVamZKFPOaWQumInXKwTA8UOAtHD+f0jyqeRxRtKy8LNdzs/GVh0yBmH+C7fwTbJ+Ul4o3jV06OxMRZgnFr655bpnyXex4SJ3sWHMrJ+qksgLLkhvlQqie4Zo8ilfjLuPF1k6by/8AHFh9MA==', 'base64'));");
|
||||
|
||||
// DNS helper util. See modules/util-dns for a human readable version
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('util-dns', Buffer.from('eJzdV2uT2jYU/c4M/+HWbWN747V3SSZNlzIZso+UZsNmAkkmAyQVtgyaNZIrycuSLfntvQKzmH0AmWYmnfoDNtJ9nHuudGwFO+XSoUgnkg2GGip7lX1ocE0TOBQyFZJoJni5VC6dspByRSPIeEQl6CGFekpCvOUzHryjUqE1VPw9cIyBlU9ZbrVcmogMRmQCXGjIFMUITEHMEgr0MqSpBsYhFKM0YYSHFMZMD2dZ8hh+ufQhjyD6mqAxQfMU/8VFMyDaoAW8hlqnB0EwHo99MkPqCzkIkrmdCk4bh8fN1vEuojUeb3lClQJJ/8qYxDL7EyApgglJHyEmZAxCAhlIinNaGLBjyTTjAw+UiPWYSFouRUxpyfqZXuFpAQ3rLRogU4SDVW9Bo2XB83qr0fLKpfeN9u9nb9vwvv7mTb3Zbhy34OwNHJ41jxrtxlkT/51AvfkBXjaaRx5QZAmz0MtUGvQIkRkGaYR0tShdSR+LORyV0pDFLMSi+CAjAwoDcUElx1ogpXLElOmiQnBRuZSwEdOzRaBuV4RJdgJDXpzx0Nhg13gkxupTxJXjlktX805cEInEaqhBp1ddDrEUR3LCHfvTC8qpZOErItWQJLbrH0pKNG1i9gv6WorLiWM30mGSkpT5UYIWeSyW5qavqB6KyLFfUN2keizk+WsiyUjNLJd5I6LJNpnfEclM9539vcpjtwA8ofyr/K+d0dHX4nkWx1Q6rm9WEH2L2+1R5fT4OkteVAwOFnazFMeA90wg139HEqjVYM+de+RkX1fJ1SmuNgRqXPwjKmnsrMH8WjDc97LFPlMT9Sk8g8ovFTiAypOnHjx+uoRmrkgsnwuJzYWd9tNMDZ0cwVel9mD/iVvkSIsW7hg+cNwFieaawnhopMNxCmWupNvz1jWokNHNHdylIxY7Z/cHw26edjq/YXWZ5IDlaDMzLSz+hPHs8o6lHyLUqLhgZgOfUilC3LSIhl7S8ATLceygz3ighrYHHRtvvUXymYevdCQyjTeJ0Wy7ujosuGObVqPzNSQndOFqJrUzr4c1CAuMVmF6KwGV8u5IJtBtc8bnq9ixQqIhoDoMUIlEcuGHgsfwN6BipsDJiCoqUWVwBHHYXW6D/aeN/8j4HHZPzLNt3R/dvrLXTOLo0fFpzbKqG6xSrFvHYHU2WqJYOqy2X2W/NU+qDx8yd4P9JnyzHe38xL4EH38MDJVID749Moo9sN0Nnp9rCkVdo7vX9ixAnrbK9rlWq8CDB9Du7PdqNWvZBGtTNdsVVCD0Z9XtdvNfy8NmeO1OpbcFzEXrvI0dMVtwg8mm+QXa3tpk1nTtSuxyesk0LuBVmzFh+hgnnMWwlpNbujwXD+eP1lnTT1GMqHNzY/u4NUeodTdUBzdXOHTobaVfyFGnV/CYrryTRyQUd72R/2eydG87VZhplsDuLlJwvyB9Z0W6+m6KBF8g+Njtqh3Y6Xb1zpKZbrfT2dv9tdcLvplc1AtCdvZyWym7oTPznwNYPFme4doDjNh51Jvf9/+z2jPdSnv+lfrcrz9m2+vZgaYGW4hQ9ZZyzZz9czpRzjeQKIWHvHAITi45fpoQjct8tNSpkODBxZ59WNkHxaEYD2J9FS0GzTUSUYbg8CwkpFZY4fX3WKGOPn6Zn1eLkfDI8qiyNk7hULM2UkQkmq4Nda3F9wSKaEyyRK8LsSp9RXJhekdUJPof7kamjA==', 'base64'));");
|
||||
#ifdef WIN32
|
||||
|
||||
134
modules/util-descriptors.js
Normal file
134
modules/util-descriptors.js
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
Copyright 2021 Intel Corporation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
function invalid()
|
||||
{
|
||||
throw ('Not supported on ' + process.platform);
|
||||
}
|
||||
|
||||
function getOpenDescriptors()
|
||||
{
|
||||
|
||||
switch (process.platform)
|
||||
{
|
||||
case "freebsd":
|
||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
||||
child.stderr.on('data', function (c) { });
|
||||
|
||||
child.stdin.write("procstat -f " + process.pid + " | tr '\\n' '`' | awk -F'`' '");
|
||||
child.stdin.write('{');
|
||||
child.stdin.write(' DEL="";');
|
||||
child.stdin.write(' printf "[";');
|
||||
child.stdin.write(' for(i=1;i<NF;++i)');
|
||||
child.stdin.write(' {');
|
||||
child.stdin.write(' A=split($i,B," ");');
|
||||
child.stdin.write(' if(B[3] ~ /^[0-9]/)');
|
||||
child.stdin.write(' {');
|
||||
child.stdin.write(' printf "%s%s", DEL, B[3];');
|
||||
child.stdin.write(' DEL=",";');
|
||||
child.stdin.write(' }');
|
||||
child.stdin.write(' }');
|
||||
child.stdin.write(' printf "]";');
|
||||
child.stdin.write("}'");
|
||||
|
||||
child.stdin.write('\nexit\n');
|
||||
child.waitExit();
|
||||
|
||||
try
|
||||
{
|
||||
return (JSON.parse(child.stdout.str.trim()));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
return ([]);
|
||||
}
|
||||
break;
|
||||
case "linux":
|
||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
||||
child.stderr.on('data', function (c) { });
|
||||
|
||||
child.stdin.write("ls /proc/" + process.pid + "/fd | tr '\\n' '`' | awk -F'`' '");
|
||||
child.stdin.write('{');
|
||||
child.stdin.write(' printf "[";');
|
||||
child.stdin.write(' DEL="";');
|
||||
child.stdin.write(' for(i=1;i<NF;++i)');
|
||||
child.stdin.write(' {');
|
||||
child.stdin.write(' printf "%s%s",DEL,$i;');
|
||||
child.stdin.write(' DEL=",";');
|
||||
child.stdin.write(' }');
|
||||
child.stdin.write(' printf "]";');
|
||||
child.stdin.write("}'");
|
||||
child.stdin.write('\nexit\n');
|
||||
child.waitExit();
|
||||
|
||||
try
|
||||
{
|
||||
return (JSON.parse(child.stdout.str.trim()));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
return ([]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return ([]);
|
||||
}
|
||||
}
|
||||
function closeDescriptors(fdArray, libc)
|
||||
{
|
||||
var fd = null;
|
||||
if (libc == null)
|
||||
{
|
||||
var libs = require('monitor-info').getLibInfo('libc');
|
||||
while (libs.length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
libc = require('_GenericMarshal').CreateNativeProxy(libs.shift().path);
|
||||
libc.CreateMethod('close');
|
||||
break;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
libc = null;
|
||||
}
|
||||
}
|
||||
if (libc == null) { throw ('cannot find libc'); }
|
||||
}
|
||||
|
||||
while (fdArray.length > 0)
|
||||
{
|
||||
fd = fdArray.pop();
|
||||
if (fd > 2)
|
||||
{
|
||||
libc.close(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (process.platform)
|
||||
{
|
||||
case 'linux':
|
||||
case 'freebsd':
|
||||
module.exports = { getOpenDescriptors: getOpenDescriptors, closeDescriptors: closeDescriptors };
|
||||
break;
|
||||
default:
|
||||
module.exports = { getOpenDescriptors: invalid, closeDescriptors: invalid };
|
||||
break;
|
||||
}
|
||||
Reference in New Issue
Block a user