1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-20 18:23:21 +00:00

1. Updated 'close' on zip-reader

2. Added 'extractAllStreams' on zip-reader`
This commit is contained in:
Bryan Roe
2020-06-17 23:10:46 -07:00
parent 702b34dbc9
commit a0dd41468a
4 changed files with 65 additions and 29 deletions

View File

@@ -125,7 +125,7 @@ extern duk_ret_t ILibDuktape_EventEmitter_DefaultNewListenerHandler(duk_context
#define duk_buffer_slice(ctx, i, start, len) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "slice");duk_swap_top(ctx, -2);duk_push_int(ctx, start);duk_push_int(ctx, len);duk_pcall_method(ctx, 2);duk_remove(ctx, -2); #define duk_buffer_slice(ctx, i, start, len) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "slice");duk_swap_top(ctx, -2);duk_push_int(ctx, start);duk_push_int(ctx, len);duk_pcall_method(ctx, 2);duk_remove(ctx, -2);
#define duk_string_concat(ctx, i) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "concat");duk_swap_top(ctx, -2);duk_dup(ctx, -3);duk_pcall_method(ctx, 1);duk_remove(ctx, -2); #define duk_string_concat(ctx, i) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "concat");duk_swap_top(ctx, -2);duk_dup(ctx, -3);duk_pcall_method(ctx, 1);duk_remove(ctx, -2);
#define duk_string_split(ctx, i, delim) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "split");duk_swap_top(ctx, -2);duk_push_string(ctx, delim);duk_call_method(ctx, 1); #define duk_string_split(ctx, i, delim) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "split");duk_swap_top(ctx, -2);duk_push_string(ctx, delim);duk_call_method(ctx, 1);
#define duk_string_endsWith(ctx, i, val) duk_prepare_method_call(ctx, i, "endsWith");duk_push_string(ctx,val);duk_pcall_method(ctx, 1);
int Duktape_GetBooleanProperty(duk_context *ctx, duk_idx_t i, char *propertyName, int defaultValue); int Duktape_GetBooleanProperty(duk_context *ctx, duk_idx_t i, char *propertyName, int defaultValue);
struct sockaddr_in6* Duktape_IPAddress4_FromString(char* address, unsigned short port); struct sockaddr_in6* Duktape_IPAddress4_FromString(char* address, unsigned short port);

View File

@@ -2269,7 +2269,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx)
duk_peval_string_noresult(ctx, "addCompressedModule('identifiers', Buffer.from('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', 'base64'));"); duk_peval_string_noresult(ctx, "addCompressedModule('identifiers', Buffer.from('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', 'base64'));");
// zip-reader, refer to modules/zip-reader.js // zip-reader, refer to modules/zip-reader.js
duk_peval_string_noresult(ctx, "addCompressedModule('zip-reader', Buffer.from('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', 'base64'));"); duk_peval_string_noresult(ctx, "addCompressedModule('zip-reader', Buffer.from('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', 'base64'));");
// zip-writer, refer to modules/zip-writer.js // zip-writer, refer to modules/zip-writer.js
duk_peval_string_noresult(ctx, "addCompressedModule('zip-writer', Buffer.from('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', 'base64'));"); duk_peval_string_noresult(ctx, "addCompressedModule('zip-writer', Buffer.from('eJzNWm1T20gS/k4V/2GSD2tpY4QtwAEc9gpsuKWW4C3sbCqbpVKyPbZnkSWdXgKE8N+3e0YvI83Idrj7cE6lbM10P93T09PT3WL35+2tnh88hmy+iIndslvk0oupS3p+GPihEzPf297a3rpiE+pFdEoSb0pDEi8oOQ2cCXylM03yBw0joCa21SIGErxOp16b3e2tRz8hS+eReH5MkogCAovIjLmU0IcJDWLCPDLxl4HLHG9CyT2LF1xKimFtb31KEfxx7ACxA+QBPM1kMuLEqC2BzyKOg+Pd3fv7e8vhmlp+ON91BV20e3XZO78enu+AtsjxwXNpFJGQ/idhISxz/EicAJSZOGNQ0XXuiR8SZx5SmIt9VPY+ZDHz5k0S+bP43gnp9taURXHIxklcslOmGqxXJgBLOR55fTokl8PX5Ox0eDlsbm99vBz9OvgwIh9Pb25Or0eX50MyuCG9wXX/cnQ5uIanC3J6/Yn8dnndbxIKVgIp9CEIUXtQkaEF6RTMNaS0JH7mC3WigE7YjE1gUd48ceaUzP2vNPRgLSSg4ZJFuIsRKDfd3nLZksXcCSJ1RSDk51003lcnJOeDXv+GnJB2C//ZB52uGBeje3udvSN7/zAdvLrAwc7bPXv/7YGdDvYF/95+5+jgbafVzZCnSeDSB5hKN8dogBGps2yYVp9PccpZ4k1QT/AKD5YTj/z3w/5gOGJLakydmMbwA43vzc3trSfhIru7pIEuv9Pq7LTfjuzW8cHhsX30Z6ObORGXD9yBE8agQRnIisDWsdEYNczPrdvsaaeB7o7MU2QxgDWicKaMDAdoTbJD2keHLZO8e0eOCvLvWvr2Lac7MNcR2remWVIddV2rejtX/ThXnTMvg5L+GRjXH/RptzNqpPyuJa2qXk9p51r8yc1pkl1iF6sJaZyEHjGe+EKOwQZNvrpjDvmMhM8lN5jT+MyJ6IXvgtcaXx232Ha+ODAErO7zbTHUh+cg9CdwkqzAdWI4MEtyckIa98zbsxvkX6Tx118Nckwauw3JTGOQApyNRtl00hOTfvt3+ZLwQBoMWFtdwsg7mHYtl3rzeNElb94wU1ClOnPjgc5WkEQLXM5nlhmsb2bWfc6g2YwYBRwuoq2HQ78N/MDIEGRTc3F/+8wDCeQN6StS7hcYvo04TKiK7t/BynBKQt5sxRWgbD0Ml9EyyxMVuszFTsTi0EQLNotLy0uXID9SN6JrcVEHxH6lgJsqsYY/N8rMAXFdPcEYAtudZu65Vn/pJ2ro39VbkXvqGzh9wmXRZ8GpcU3HxOjDFsNPUzaVhF02URW4ovVzxVEyjyrJbeBREkPoXOoJnjGPRQs6NfyAX0DFAYYQH/kutZg389tG46O4iUmPenHouKQPl8Qk9sNHckMnfjiNLMsqRbbAj6SnXl968JwlBZfMDymmKdaXgHpTkCDuss+3XXkOBofsG+VenXHBxYJKiQtYVetX6kBQivIwYIBCmFKkC7W+uP7EcS/gdI0w/VAPV6olyKxh+QyItxZsy/QDRNk9++rcsDvy1vYw2p0lsxkNLccFZmO/A/uQAsuU5VWi+1QppUO/ShtM14weZC37nSbZa+F/vcTNUNqA0t7H/4DStl8AYMP/FgKUF9HrW5jb0dxysPYmRJ4uKX9gk4ds7jng21TP3e6g3UHEvsKM3GnCvIa3o+V9D4djmSxX8LYeWodNcljlBt5/U4+iQ/6eQIoPx++MxeTCdeYrwA7RVFpFepCzY/KJJ/Y9jRf+tM6WHCjd7iaxS5oBEG4TuYZpcsWvhJUwbfAevWGwegk9WN1pnKba0Yqt3QMf2FNshDjnDxqcFUh5RgMmNWHHbQEKSDcUkgn2lZLBbBbRWEapBDIYERGrSMT0VPBBc6G1IB0B/wd1Iixt4GyaVuwPeZJnmGtRst2DegSPdw5Wjhyt9UAfvMlGUPvroa4cSM3e+1MoUgBrxJYqlvAB+0ex+jx11GJtohcGk3SD0r3UL3LfNssRpXqJWIknUoeenFQVlNfJckzDwUzcNwp3mjJVLqHf/YjxezPjmCRhCFdPNp7SS1zcgQ0FnueDzRSE08Coej179CFWr2bMQV5lo+QpC8WZUuljt8gN4IDwVsAJ+caCHVHZldLLLJhjryDKMtpfSIv89BN5lZeEswjKQfoA9XU0fPQmFa6A0js4DZJC2QTPfTPr8wRKJ45nnsCcpSQWeILLLdfMAAFFpDk5GqYTswiqZ7l05XriYL2Wldwj3UYeHk+q6nOOro68r0j1YY+5VAW3WaFE948dL46swZeb/uD66pNWBg/WJ6qaVpSMRZmZL/DLOK/FUpvqtQbuq9TkwnZWBLFER9q76aUplzSVh6CzR4jXyryofx1eIGjaBELgEqky7bg7C+ZkzLMldIPSgJJHtY46ZskJ8M47q9DOQn9pKNYsG2XB08Qqfp41paOFOVXeyh11daFNZMofNa3RI0pJhuYmriCuTjlWCNClMDoB9WnICvCKV1j4S0l0stREukomvCPGr6YfloHtiybPVzeSgVfWBjtbc4ogzZIEgZTSNY1Ha63+iqcBprLfmf5ITNw0fcMJiZvn3bIgLADWba0MLBDrcnvtnXebhychsnxI5PtPzJvacOKHciwtDLiT9yEn8A3XZE5vPJGPZ5ej4THZaR+I7pQO1lID1qqrW2GHnBOoUq5aIhbQ9Kp6InDLH4sGRKFVOfZjJlNxpz5yimB3XIl9z1mekEiOdQMQQ+bdqTmDsPjKpEHcbOT7d7LyJo4XoX9PjMa1L14ipF1tOm2UYy/cyWAfj96nbWSjtonBdQPjZLoak0Xi3TXJzE2ixQZtJ93GYbnMYco5m/zhbSWRgoGcwW+bN5NkrsxzeHeQS6y2vH5A3gqZ+OEGUVpqqmacDo2fuG4N8bN+WO3HbaBWWSj/3lyqZkivxOq9EEk0xGxng53YTOFq569ZfoaM1HFlr93QXf9Lt+Orw42tW1y9k/xvTA2WhhtM6TDXCKlajQc5vP42PdfFKdPLy1rhihuU6xWj9syqnFlz2dQZ8eXbV3DqPGUNc2GQ/+cgQJf4GmkaOsxr1Gm4PgbIPfbiqozVGF9UGXx6MP6bTuJLrL8aWNLyeyW0xPUzFBmDRC8uUsj5sJRqSxNF5ZwVzZIQyVHkjrSYy7xLftHAZ7JDo0xodgnHAyeJqFGUFjW5FzA+PXcrJEXBB9Pll3Gli730ik+fR6DGWXzTEhg0hGxyjCkUDjXTZEXtm2NGEFF3BohaIAsnJY9hMyNHrb5+qnghZKpQKZ+XBxGulIzBDiiHRiFKPJ6zlXtIBaW2AEhB8tpYtLWrLl76VMsB4HqZuPwk7KhrqWS4oBaWc0XBlnYLXya4rtBZvU5VXqX74UKFyhslZWF97cbp+kkaMpH5lhYmGrb4CgMKqibvp1VZ046SFImKn3n3QfxI4VrSOZDRqv6BHZBwsmcbgrupEIhd+hBgvVp2DWWPxdoyoCIVqT8smpKjYmu55BBTUsmRDtSUHLmt8t5qd02AsdKYAATlaJR1P0sRKBvcOOpAFKnp4f6yIqC8qEW7qfOsfJ2reb1Kybk3xb+1Ul5mKjcsxlg6mSp9K9uuUiJV5XjzvyLa/GWbiiL1XKQuetZEAhQxypfSz94P499i8Sb0lEV3L0EXLSNAH/kxGMfTyFi79NJ7VrlDxJf+jVZUZp5wvc1xszCNr05TdcVbDBLF+DdCHP+m1gkRuuZ0a3woZ9bdeM+m6pXP+cnDQCga7ODBUn89P5f8bwngO+8vbG8t/WkCHksfAj+MMWd6yup5/sXR/wEOpiH4', 'base64'));");

View File

@@ -391,32 +391,24 @@ int ILibDuktape_readableStream_WriteDataEx(ILibDuktape_readableStream *stream, i
{ {
if (ILibIsRunningOnChainThread(stream->chain)) if (ILibIsRunningOnChainThread(stream->chain))
{ {
ILibDuktape_EventEmitter_SetupEmit(stream->ctx, stream->object, "data"); // [emit][this][data]
if (streamReserved == 0) if (streamReserved == 0)
{ {
duk_push_external_buffer(stream->ctx); // [extBuffer] duk_push_external_buffer(stream->ctx); // [emit][this][data][extBuffer]
duk_config_buffer(stream->ctx, -1, buffer, bufferLen); duk_config_buffer(stream->ctx, -1, buffer, bufferLen);
} duk_push_buffer_object(stream->ctx, -1, 0, bufferLen, DUK_BUFOBJ_NODEJS_BUFFER); // [emit][this][data][extBuffer][nodeBuffer]
ILibDuktape_EventEmitter_SetupEmit(stream->ctx, stream->object, "data"); // [extBuffer][emit][this][data] duk_remove(stream->ctx, -2); // [emit][this][data][nodeBuffer]
if (streamReserved == 0)
{
duk_push_buffer_object(stream->ctx, -4, 0, bufferLen, DUK_BUFOBJ_NODEJS_BUFFER); // [extBuffer][emit][this][data][nodeBuffer]
} }
else else
{ {
duk_push_lstring(stream->ctx, buffer, bufferLen); // [extBuffer][emit][this][data][string] duk_push_lstring(stream->ctx, buffer, bufferLen); // [emit][this][data][string]
} }
if (duk_pcall_method(stream->ctx, 2) != 0) // [retVal] if (duk_pcall_method(stream->ctx, 2) != 0) // [retVal]
{ {
ILibDuktape_Process_UncaughtException(stream->ctx); ILibDuktape_Process_UncaughtException(stream->ctx);
} }
if (streamReserved == 0)
{ duk_pop(stream->ctx); // ...
duk_pop_2(stream->ctx);
}
else
{
duk_pop(stream->ctx); // ...
}
} }
else else
{ {

View File

@@ -72,6 +72,11 @@ function zippedObject(table)
{ {
this._ObjectID = 'zip-reader.zippedObject'; this._ObjectID = 'zip-reader.zippedObject';
this._table = table; this._table = table;
for (var jx in table)
{
this._FD = table[jx].fd;
break;
}
Object.defineProperty(this, 'files', { Object.defineProperty(this, 'files', {
get: function () get: function ()
{ {
@@ -234,6 +239,45 @@ function zippedObject(table)
extractNext(ret); extractNext(ret);
return (ret); return (ret);
}; };
this._extractAllStreams2 = function _extractAllStreams2(prom)
{
if (prom.files.length == 0)
{
// finished
prom._res(prom.results);
console.log(this._ObjectID);
this.close();
return;
}
prom.results.push({ name: prom.files.pop() });
prom.results.peek().stream = this.getStream(prom.results.peek().name);
prom.results.peek().stream.ret = prom;
prom.results.peek().stream.on('data', function (c)
{
if (this._buf == null)
{
this._buf = Buffer.concat([c]);
}
else
{
this._buf = Buffer.concat([this._buf, c]);
}
});
prom.results.peek().stream.on('end', function ()
{
this.ret.results.peek().buffer = this._buf;
this.ret.z._extractAllStreams2(this.ret);
});
};
this.extractAllStreams = function extractAllStreams()
{
var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; });
ret.files = this.files;
ret.results = [];
ret.z = this;
this._extractAllStreams2(ret);
return (ret);
};
this._readLocalHeaderSink = function _readLocalHeaderSink(err, bytesRead, buffer) this._readLocalHeaderSink = function _readLocalHeaderSink(err, bytesRead, buffer)
{ {
var info = _readLocalHeaderSink.info; var info = _readLocalHeaderSink.info;
@@ -264,6 +308,18 @@ function zippedObject(table)
this._readLocalHeaderSink.info = info; this._readLocalHeaderSink.info = info;
require('fs').read(info.fd, { buffer: Buffer.alloc(30), position: info.offset }, this._readLocalHeaderSink); require('fs').read(info.fd, { buffer: Buffer.alloc(30), position: info.offset }, this._readLocalHeaderSink);
}; };
this.close = function close()
{
if (this._FD != null)
{
require('fs').closeSync(this._FD);
this._FD = null;
this._table = null;
}
}
require('events').EventEmitter.call(this);
this.on('~', function () { this.close(); });
} }
function read(path) function read(path)
@@ -274,18 +330,6 @@ function read(path)
ret._rej('File not found'); ret._rej('File not found');
return (ret); return (ret);
} }
ret._tmp = {};
require('events').EventEmitter.call(ret._tmp);
ret._tmp.on('~', function () { if (this._fd) { require('fs').closeSync(this._fd); } });
ret.close = function close()
{
if (this._fd)
{
require('fs').closeSync(this._fd);
this._fd = null;
}
}
ret._len = require('fs').statSync(path).size; ret._len = require('fs').statSync(path).size;
ret._fd = require('fs').openSync(path, require('fs').constants.O_RDONLY); ret._fd = require('fs').openSync(path, require('fs').constants.O_RDONLY);