1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2026-01-07 11:03:55 +00:00

1. Added writeCalledByEnd

2. Updated http-digest.request, to use pass-thru end(buffer)
This commit is contained in:
Bryan Roe
2021-07-19 19:07:03 -07:00
parent c7a4356dac
commit aec6f65906
3 changed files with 30 additions and 4 deletions

File diff suppressed because one or more lines are too long

View File

@@ -315,7 +315,21 @@ duk_ret_t ILibDuktape_WritableStream_PipeSink(duk_context *ctx)
if (g_displayStreamPipeMessages) { printf("PIPE: [%s] => [%s:%d]\n", Duktape_GetStringPropertyValue(ctx, -2, ILibDuktape_OBJID, "unknown"), Duktape_GetStringPropertyValue(ctx, -1, ILibDuktape_OBJID, "unknown"), ILibDuktape_GetReferenceCount(ctx, -1)); } if (g_displayStreamPipeMessages) { printf("PIPE: [%s] => [%s:%d]\n", Duktape_GetStringPropertyValue(ctx, -2, ILibDuktape_OBJID, "unknown"), Duktape_GetStringPropertyValue(ctx, -1, ILibDuktape_OBJID, "unknown"), ILibDuktape_GetReferenceCount(ctx, -1)); }
return(0); return(0);
} }
duk_ret_t ILibDuktape_WritableStream_Ended(duk_context *ctx)
{
duk_push_this(ctx); // WS
ILibDuktape_WritableStream *WS = (ILibDuktape_WritableStream*)Duktape_GetBufferProperty(ctx, -1, ILibDuktape_WritableStream_WSPTRS);
if (WS != NULL)
{
duk_push_boolean(ctx, WS->endBytes > 0);
}
else
{
duk_push_false(ctx);
}
return(1);
}
ILibDuktape_WritableStream* ILibDuktape_WritableStream_Init(duk_context *ctx, ILibDuktape_WritableStream_WriteHandler WriteHandler, ILibDuktape_WritableStream_EndHandler EndHandler, void *user) ILibDuktape_WritableStream* ILibDuktape_WritableStream_Init(duk_context *ctx, ILibDuktape_WritableStream_WriteHandler WriteHandler, ILibDuktape_WritableStream_EndHandler EndHandler, void *user)
{ {
ILibDuktape_WritableStream *retVal; ILibDuktape_WritableStream *retVal;
@@ -337,6 +351,7 @@ ILibDuktape_WritableStream* ILibDuktape_WritableStream_Init(duk_context *ctx, IL
ILibDuktape_EventEmitter_CreateEventEx(emitter, "finish"); ILibDuktape_EventEmitter_CreateEventEx(emitter, "finish");
ILibDuktape_EventEmitter_CreateEventEx(emitter, "error"); ILibDuktape_EventEmitter_CreateEventEx(emitter, "error");
ILibDuktape_CreateInstanceMethod(ctx, "writeCalledByEnd", ILibDuktape_WritableStream_Ended, 0);
ILibDuktape_CreateProperty_InstanceMethod(ctx, "write", ILibDuktape_WritableStream_Write, DUK_VARARGS); ILibDuktape_CreateProperty_InstanceMethod(ctx, "write", ILibDuktape_WritableStream_Write, DUK_VARARGS);
ILibDuktape_CreateEventWithGetter(ctx, "end", ILibDuktape_WritableStream_End_Getter); ILibDuktape_CreateEventWithGetter(ctx, "end", ILibDuktape_WritableStream_End_Getter);
ILibDuktape_EventEmitter_AddOn_Infrastructure(ctx, -1, "pipe", ILibDuktape_WritableStream_PipeSink); ILibDuktape_EventEmitter_AddOn_Infrastructure(ctx, -1, "pipe", ILibDuktape_WritableStream_PipeSink);

View File

@@ -159,7 +159,18 @@ function http_digest_instance(options)
this._buffered = Buffer.concat([this._buffered, chunk], this._buffered.length + chunk.length); this._buffered = Buffer.concat([this._buffered, chunk], this._buffered.length + chunk.length);
} }
if (this._request) { this._request.write(chunk); } if (this._request)
{
console.log('Write Called By End: ' + this.writeCalledByEnd());
if (this.writeCalledByEnd())
{
this._request.end(chunk);
}
else
{
this._request.write(chunk);
}
}
if (flush != null) { flush(); } if (flush != null) { flush(); }
return (true); return (true);
}, },
@@ -167,7 +178,7 @@ function http_digest_instance(options)
{ {
if (this._ended) { throw ('Stream already ended'); } if (this._ended) { throw ('Stream already ended'); }
this._ended = true; this._ended = true;
if (this._request) { this._request.end(); } if (this._request && !this.writeCalledByEnd()) { this._request.end(); }
if (flush != null) { flush(); } if (flush != null) { flush(); }
} }
}); });