Bad solution to a bad problem
This commit is contained in:
parent
cd26a4c093
commit
edeb1e25d3
@ -177,13 +177,13 @@ var getChannel = function (env, id, callback) {
|
|||||||
}, env.channelExpirationMs / 2);
|
}, env.channelExpirationMs / 2);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
var path = mkPath(env, id);
|
||||||
var channel = env.channels[id] = {
|
var channel = env.channels[id] = {
|
||||||
atime: +new Date(),
|
atime: +new Date(),
|
||||||
messages: [],
|
|
||||||
writeStream: undefined,
|
writeStream: undefined,
|
||||||
whenLoaded: [ callback ],
|
whenLoaded: [ callback ],
|
||||||
onError: [ ]
|
onError: [ ],
|
||||||
|
path: path
|
||||||
};
|
};
|
||||||
var complete = function (err) {
|
var complete = function (err) {
|
||||||
var whenLoaded = channel.whenLoaded;
|
var whenLoaded = channel.whenLoaded;
|
||||||
@ -195,7 +195,6 @@ var getChannel = function (env, id, callback) {
|
|||||||
}
|
}
|
||||||
whenLoaded.forEach(function (wl) { wl(err, (err) ? undefined : channel); });
|
whenLoaded.forEach(function (wl) { wl(err, (err) ? undefined : channel); });
|
||||||
};
|
};
|
||||||
var path = mkPath(env, id);
|
|
||||||
var fileExists;
|
var fileExists;
|
||||||
var errorState;
|
var errorState;
|
||||||
nThen(function (waitFor) {
|
nThen(function (waitFor) {
|
||||||
@ -207,17 +206,6 @@ var getChannel = function (env, id, callback) {
|
|||||||
}
|
}
|
||||||
fileExists = exists;
|
fileExists = exists;
|
||||||
}));
|
}));
|
||||||
}).nThen(function (waitFor) {
|
|
||||||
if (errorState) { return; }
|
|
||||||
if (!fileExists) { return; }
|
|
||||||
readMessages(path, function (msg) {
|
|
||||||
channel.messages.push(msg);
|
|
||||||
}, waitFor(function (err) {
|
|
||||||
if (err) {
|
|
||||||
errorState = true;
|
|
||||||
complete(err);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}).nThen(function (waitFor) {
|
}).nThen(function (waitFor) {
|
||||||
if (errorState) { return; }
|
if (errorState) { return; }
|
||||||
var stream = channel.writeStream = Fs.createWriteStream(path, { flags: 'a' });
|
var stream = channel.writeStream = Fs.createWriteStream(path, { flags: 'a' });
|
||||||
@ -255,7 +243,7 @@ var message = function (env, chanName, msg, cb) {
|
|||||||
chan.writeStream.write(msg + '\n', function () {
|
chan.writeStream.write(msg + '\n', function () {
|
||||||
chan.onError.splice(chan.onError.indexOf(complete) - 1, 1);
|
chan.onError.splice(chan.onError.indexOf(complete) - 1, 1);
|
||||||
if (!cb) { return; }
|
if (!cb) { return; }
|
||||||
chan.messages.push(msg);
|
//chan.messages.push(msg);
|
||||||
chan.atime = +new Date();
|
chan.atime = +new Date();
|
||||||
complete();
|
complete();
|
||||||
});
|
});
|
||||||
@ -268,19 +256,25 @@ var getMessages = function (env, chanName, handler, cb) {
|
|||||||
cb(err);
|
cb(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var errorState = false;
|
||||||
try {
|
try {
|
||||||
chan.messages
|
readMessages(chan.path, function (msg) {
|
||||||
.forEach(function (message) {
|
if (!msg || errorState) { return; }
|
||||||
if (!message) { return; }
|
//console.log(msg);
|
||||||
handler(message);
|
handler(msg);
|
||||||
});
|
}, function (err) {
|
||||||
|
if (err) {
|
||||||
|
errorState = true;
|
||||||
|
return void cb(err);
|
||||||
|
}
|
||||||
|
chan.atime = +new Date();
|
||||||
|
cb();
|
||||||
|
});
|
||||||
} catch (err2) {
|
} catch (err2) {
|
||||||
console.error(err2);
|
console.error(err2);
|
||||||
cb(err2);
|
cb(err2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chan.atime = +new Date();
|
|
||||||
cb();
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user