refactor(main) sendFile asyncCall -> lstat

This commit is contained in:
coderaiser 2014-04-08 02:49:42 -04:00
parent 901eb2d674
commit 9e6d235cb7

View file

@ -232,7 +232,7 @@
Util.copyObj(header, {
'Content-Range' : 'bytes ' + p.range.start +
'-' + p.range.end +
'/' + p.length,
'/' + p.range.sizeTotal,
'Content-Length': p.range.size
});
@ -279,35 +279,32 @@
* @param pGzip - данные сжаты gzip'ом
*/
function sendFile(params) {
var isGzip, getTime, getSize, ext,
var isGzip,
p = params,
ret = checkParams(params);
if (ret) {
isGzip = isGZIP(p.request) && p.gzip;
ext = Util.getExtension(p.name);
getTime = Util.bind(time.get, p.name, {
str: true
});
getSize = Util.bind(dir.getSize, p.name);
Util.asyncCall([getTime, getSize], function(timeData, sizeData) {
var error = timeData[0] || sizeData[0],
time = timeData[1],
length = sizeData[1],
range = getRange(p.request, length);
if (error) {
fs.lstat(p.name, function(error, stat) {
var time, length, range;
if (error) {
sendError(params, error);
} else {
time = stat.mtime,
length = stat.size,
range = getRange(p.request, length);
if (range)
Util.copyObj(p, {
range : range,
status : RANGE
});
Util.copyObj(p, {
isGzip : isGzip && !range,
time : time,
range : range,
length : length,
status : range ? RANGE : OK
time : time
});
mainSetHeader(params);
@ -480,20 +477,21 @@
response.setHeader(name, header[name]);
}
function getRange(req, totalSize) {
function getRange(req, sizeTotal) {
var range, start, end, size, parts,
rangeStr = req.headers.range;
if (rangeStr) {
parts = rangeStr.replace(/bytes=/, "").split("-");
start = parts[0];
end = parts[1] || totalSize - 1;
end = parts[1] || sizeTotal - 1;
size = (end - start) + 1;
range = {
start : start - 0,
end : end - 0,
size : size
start : start - 0,
end : end - 0,
size : size,
sizeTotal : sizeTotal
};
}