Skip to content

Commit 59ec2e3

Browse files
committed
Partial Load of files inside JPAK
* Fixes #28
1 parent a591782 commit 59ec2e3

2 files changed

Lines changed: 42 additions & 18 deletions

File tree

dist/jpak.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2953,12 +2953,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29532953
return def.promise;
29542954
};
29552955

2956-
Loader.prototype.getFileArrayBuffer = function(path, type) {
2956+
Loader.prototype.getFileArrayBuffer = function(path, type, offset, len) {
29572957
var def = Q.defer();
29582958

29592959
switch (this.jpakType) {
2960-
case "JPAK1": return this._p_jpak1_getFile(path, type);
2961-
case "JMS": return this._p_jms1_getFile(path, type);
2960+
case "JPAK1": return this._p_jpak1_getFile(path, type, offset, len);
2961+
case "JMS": return this._p_jms1_getFile(path, type, offset, len);
29622962
default: def.reject("Not a valid jpak file!");
29632963
}
29642964

@@ -3058,16 +3058,22 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30583058
});
30593059
};
30603060

3061-
Loader.prototype._p_jpak1_getFile = function(path, type) {
3061+
Loader.prototype._p_jpak1_getFile = function(path, type, offset, len) {
30623062
var def = Q.defer();
30633063
var file = this.findFileEntry(path);
30643064
type = type || 'application/octet-binary';
30653065

3066+
if (file === null || file === undefined)
3067+
def.reject("File does not exists!");
3068+
3069+
offset = offset || 0;
3070+
len = len || file.size;
3071+
30663072
var fileLoader = new JPAK.Tools.DataLoader({
30673073
url: this.jpakfile,
30683074
partial: true,
3069-
partialFrom: file.offset,
3070-
partialTo: file.offset + file.size -1
3075+
partialFrom: file.offset + offset,
3076+
partialTo: file.offset + len -1
30713077
});
30723078

30733079
fileLoader.start().then(function(data) {
@@ -3139,18 +3145,24 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31393145
});
31403146
};
31413147

3142-
Loader.prototype._p_jms1_getFile = function(path, type) {
3148+
Loader.prototype._p_jms1_getFile = function(path, type, offset, len) {
31433149
var def = Q.defer();
31443150
var file = this.findFileEntry(path);
31453151
type = type || 'application/octet-binary';
31463152

3153+
offset = offset || 0;
3154+
len = len || file.size;
3155+
3156+
if (file === null || file === undefined)
3157+
def.reject("File does not exists!");
3158+
31473159
if (file.volume in this.volumeTable) {
31483160
var volumePath = this.volumeTable[file.volume].filename;
31493161
var fileLoader = new JPAK.Tools.DataLoader({
31503162
url: volumePath,
31513163
partial: true,
3152-
partialFrom: file.offset,
3153-
partialTo: file.offset + file.size -1
3164+
partialFrom: file.offset + offset,
3165+
partialTo: file.offset + len -1
31543166
});
31553167

31563168
fileLoader.start().then(function(data) {

jssrc/loader.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -173,12 +173,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
173173
return def.promise;
174174
};
175175

176-
Loader.prototype.getFileArrayBuffer = function(path, type) {
176+
Loader.prototype.getFileArrayBuffer = function(path, type, offset, len) {
177177
var def = Q.defer();
178178

179179
switch (this.jpakType) {
180-
case "JPAK1": return this._p_jpak1_getFile(path, type);
181-
case "JMS": return this._p_jms1_getFile(path, type);
180+
case "JPAK1": return this._p_jpak1_getFile(path, type, offset, len);
181+
case "JMS": return this._p_jms1_getFile(path, type, offset, len);
182182
default: def.reject("Not a valid jpak file!");
183183
}
184184

@@ -278,16 +278,22 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
278278
});
279279
};
280280

281-
Loader.prototype._p_jpak1_getFile = function(path, type) {
281+
Loader.prototype._p_jpak1_getFile = function(path, type, offset, len) {
282282
var def = Q.defer();
283283
var file = this.findFileEntry(path);
284284
type = type || 'application/octet-binary';
285285

286+
if (file === null || file === undefined)
287+
def.reject("File does not exists!");
288+
289+
offset = offset || 0;
290+
len = len || file.size;
291+
286292
var fileLoader = new JPAK.Tools.DataLoader({
287293
url: this.jpakfile,
288294
partial: true,
289-
partialFrom: file.offset,
290-
partialTo: file.offset + file.size -1
295+
partialFrom: file.offset + offset,
296+
partialTo: file.offset + len -1
291297
});
292298

293299
fileLoader.start().then(function(data) {
@@ -359,18 +365,24 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
359365
});
360366
};
361367

362-
Loader.prototype._p_jms1_getFile = function(path, type) {
368+
Loader.prototype._p_jms1_getFile = function(path, type, offset, len) {
363369
var def = Q.defer();
364370
var file = this.findFileEntry(path);
365371
type = type || 'application/octet-binary';
366372

373+
offset = offset || 0;
374+
len = len || file.size;
375+
376+
if (file === null || file === undefined)
377+
def.reject("File does not exists!");
378+
367379
if (file.volume in this.volumeTable) {
368380
var volumePath = this.volumeTable[file.volume].filename;
369381
var fileLoader = new JPAK.Tools.DataLoader({
370382
url: volumePath,
371383
partial: true,
372-
partialFrom: file.offset,
373-
partialTo: file.offset + file.size -1
384+
partialFrom: file.offset + offset,
385+
partialTo: file.offset + len -1
374386
});
375387

376388
fileLoader.start().then(function(data) {

0 commit comments

Comments
 (0)