mirror of
https://github.com/gnh1201/welsonjs.git
synced 2026-03-14 15:48:45 +00:00
Merge pull request #386 from gnh1201/dev
Add custom dispose to UseObject and update pipe-ipc
This commit is contained in:
commit
5aa8285427
23
app.js
23
app.js
|
|
@ -188,18 +188,27 @@ if (typeof CreateObject === "undefined") {
|
|||
}
|
||||
|
||||
if (typeof UseObject === "undefined") {
|
||||
var UseObject = function(progId, callback) {
|
||||
var _dispose = function(obj) {
|
||||
try {
|
||||
obj.Close();
|
||||
} catch (e) { /* ignore */ }
|
||||
};
|
||||
var UseObject = function(progId, callback, dispose, fallback) {
|
||||
if (typeof callback !== "function") {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (typeof dispose !== "function") {
|
||||
dispose = function(obj) {
|
||||
try {
|
||||
obj.Close();
|
||||
} catch (e) { /* ignore */ }
|
||||
};
|
||||
}
|
||||
|
||||
var obj = CreateObject(progId);
|
||||
try {
|
||||
return callback(obj);
|
||||
} catch (e) {
|
||||
return (typeof fallback === "function" ?
|
||||
fallback(obj, e) : null);
|
||||
} finally {
|
||||
_dispose(obj);
|
||||
dispose(obj);
|
||||
obj = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -160,19 +160,22 @@ function Converter() {
|
|||
};
|
||||
|
||||
this.repositionObject = function(stream, position) {
|
||||
position = (position !== "number" ? 0 : position);
|
||||
position = (typeof position !== "number" ? 0 : position);
|
||||
|
||||
var _dispose = function() {}; // prevent dispose after repositionObject
|
||||
|
||||
return UseObject("ADODB.Stream", function(newStream) {
|
||||
newStream.Type = adTypeBinary;
|
||||
newStream.Mode = adModeReadWrite;
|
||||
newStream.Open();
|
||||
|
||||
stream.Position = position;
|
||||
stream.CopyTo(newStream);
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
|
||||
return newStream;
|
||||
});
|
||||
|
||||
}, _dispose);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -413,9 +416,12 @@ function PipeIPC() {
|
|||
stream.Charset = charset;
|
||||
stream.Open();
|
||||
stream.WriteText(str);
|
||||
stream = (new Converter()).repositionObject(stream, 3);
|
||||
stream.SaveToFile(dst, adSaveCreateOverWrite);
|
||||
stream.Close();
|
||||
|
||||
var newStream = (new Converter()).repositionObject(stream, 3);
|
||||
newStream.SaveToFile(dst, adSaveCreateOverWrite);
|
||||
newStream.Close();
|
||||
|
||||
// will be auto dispose by UseObject
|
||||
});
|
||||
|
||||
// Set a result
|
||||
|
|
@ -565,7 +571,7 @@ exports.adSaveCreateNotExist = adSaveCreateNotExist;
|
|||
exports.adSaveCreateOverWrite = adSaveCreateOverWrite;
|
||||
exports.adModeReadWrite = adModeReadWrite;
|
||||
|
||||
exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.24";
|
||||
exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.26";
|
||||
exports.AUTHOR = "gnh1201@catswords.re.kr";
|
||||
exports.global = global;
|
||||
exports.require = require;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user