diff --git a/lib/pipe-ipc.js b/lib/pipe-ipc.js index 3903314..c3e6fa7 100644 --- a/lib/pipe-ipc.js +++ b/lib/pipe-ipc.js @@ -98,25 +98,31 @@ function makeProbabilityBit(p) { return !( p > 0.0 ? ( (randomize() / p) > 1.0 ) : true) ? 1 : 0; } -function makeInterface(i) { - return CreateObject(["Scripting.FileSystemObject", "ADODB.Stream"][i]); -} - function openTextFile(filename, iomode) { - return makeInterface(0).OpenTextFile(filename, iomode, true, TristateTrue); + return UseObject("Scripting.FileSystemObject", function(fso) { + return fso.OpenTextFile(filename, iomode, true, TristateTrue); + }); } function checkFileExists(filename) { - return makeInterface(0).FileExists(filename);; + return UseObject("Scripting.FileSystemObject", function(fso) { + return fso.FileExists(filename); + }); } function deleteFile(filename) { - if (checkFileExists(filename)) makeInterface(0).DeleteFile(filename); + if (checkFileExists(filename)) { + return UseObject("Scripting.FileSystemObject", function(fso) { + fso.DeleteFile(filename); + }); + } } function getFileSize(filename) { try { - return makeInterface(0).GetFile(filename).Size; + return UseObject("Scripting.FileSystemObject", function(fso) { + return fso.GetFile(filename).Size; + }); } catch (e) { return -1; } @@ -130,40 +136,43 @@ function Converter() { }; this.getBinaryFromText = function() { - var stream = makeInterface(1); - stream.Type = adTypeText; - stream.CharSet = CdoCharset.CdoUTF_8; - stream.Open(); - stream.WriteText(this.value); - stream.Position = 0; - stream.Type = adTypeBinary; - return stream.Read(); + return UseObject("ADODB.Stream", function(stream) { + stream.Type = adTypeText; + stream.CharSet = CdoCharset.CdoUTF_8; + stream.Open(); + stream.WriteText(this.value); + stream.Position = 0; + stream.Type = adTypeBinary; + return stream.Read(); + }); }; this.getTextFromBinary = function() { - var stream = makeInterface(1); - stream.Type = adTypeBinary; - stream.Open(); - stream.Write(this.value); - stream.Position = 0; - stream.Type = adTypeText; - stream.CharSet = CdoCharset.CdoUTF_8; - return stream.ReadText(); + return UseObject("ADODB.Stream", function(stream) { + stream.Type = adTypeBinary; + stream.Open(); + stream.Write(this.value); + stream.Position = 0; + stream.Type = adTypeText; + stream.CharSet = CdoCharset.CdoUTF_8; + return stream.ReadText(); + }); }; this.repositionObject = function(stream, position) { position = (position !== "number" ? 0 : position); + + 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; + }); - var _stream = makeInterface(1); - _stream.Type = adTypeBinary; - _stream.Mode = adModeReadWrite; - _stream.Open(); - stream.Position = position; - stream.CopyTo(_stream); - stream.Flush(); - stream.Close(); - - return _stream; }; } @@ -399,14 +408,15 @@ function PipeIPC() { } // Convert UTF-16 BOM to a character set - var stream = makeInterface(1); - stream.Type = adTypeText; - stream.Charset = charset; - stream.Open(); - stream.WriteText(str); - stream = (new Converter()).repositionObject(stream, 3); - stream.SaveToFile(dst, adSaveCreateOverWrite); - stream.Close(); + UseObject("ADODB.Stream", function(stream) { + stream.Type = adTypeText; + stream.Charset = charset; + stream.Open(); + stream.WriteText(str); + stream = (new Converter()).repositionObject(stream, 3); + stream.SaveToFile(dst, adSaveCreateOverWrite); + stream.Close(); + }); // Set a result isCommited = true; @@ -462,7 +472,7 @@ function PipeIPC() { this.openReader(); text += this._read(this.reader); isReadCompleted = true; - + this.lastReadTime = this.getCurrentTime(); this.closeReader(); } catch (e) { @@ -495,15 +505,15 @@ function PipeIPC() { var isReadCompleted = false; while (!isReadCompleted) { try { - var ado = makeInterface(1); - ado.Charset = charset; - ado.Open(); - ado.LoadFromFile(filename); - text += ado.ReadText(); - ado.Close(); + UseObject("ADODB.Stream", function(stream) { + stream.Charset = charset; + stream.Open(); + stream.LoadFromFile(filename); + text += stream.ReadText(); + stream.Close(); + }); isReadCompleted = true; } catch (e) { - //console.log(e.message); isReadCompleted = false; } } @@ -555,7 +565,7 @@ exports.adSaveCreateNotExist = adSaveCreateNotExist; exports.adSaveCreateOverWrite = adSaveCreateOverWrite; exports.adModeReadWrite = adModeReadWrite; -exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.23"; +exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.24"; exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = require;