Skip to content

Commit

Permalink
Fixed the serialization [v2]
Browse files Browse the repository at this point in the history
  • Loading branch information
AdrienCastex committed Jun 28, 2017
1 parent 6656596 commit 14b6e4c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 9 deletions.
21 changes: 17 additions & 4 deletions lib/server/v2/webDAVServer/Persistence.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,35 @@
Object.defineProperty(exports, "__esModule", { value: true });
var Serialization_1 = require("../../../manager/v2/fileSystem/Serialization");
var VirtualFileSystem_1 = require("../../../manager/v2/instances/VirtualFileSystem");
var PhysicalFileSystem_1 = require("../../../manager/v2/instances/PhysicalFileSystem");
var zlib = require("zlib");
var fs = require("fs");
function defaultSerializers() {
return [
new VirtualFileSystem_1.VirtualSerializer()
new VirtualFileSystem_1.VirtualSerializer(),
new PhysicalFileSystem_1.PhysicalSerializer()
];
}
function load(data, serializers, callback) {
var _this = this;
serializers = serializers ? serializers : defaultSerializers();
Serialization_1.unserialize(data, serializers, function (e, udata) {
_this.fileSystems = udata;
var fSerializers = serializers ? serializers.concat(defaultSerializers()) : defaultSerializers();
Serialization_1.unserialize(data, fSerializers, function (e, udata) {
if (!e)
_this.fileSystems = udata;
callback(e);
});
}
exports.load = load;
function autoLoad(callback) {
var _this = this;
var options = this.options.autoLoad;
if (!options)
options = {};
if (!options.treeFilePath)
if (!this.options.autoSave.treeFilePath)
return callback(new Error('The "treeFilePath" of the "autoLoad" option is not found.'));
else
options.treeFilePath = this.options.autoSave.treeFilePath;
var oStream = fs.createReadStream(options.treeFilePath);
var stream = oStream.pipe(zlib.createGunzip());
oStream.on('error', callback);
Expand Down Expand Up @@ -52,6 +63,8 @@ function autoSave(options) {
options.streamProvider = function (s, cb) { return cb(s); };
if (!options.onSaveError)
options.onSaveError = function () { };
if (!options.tempTreeFilePath)
options.tempTreeFilePath = options.treeFilePath + '.tmp';
var saving = false;
var saveRequested = false;
this.afterRequest(function (ctx, next) {
Expand Down
24 changes: 19 additions & 5 deletions src/server/v2/webDAVServer/Persistence.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { FileSystem } from '../../../manager/v2/fileSystem/FileSystem'
import { SimpleCallback } from '../../../manager/v2/fileSystem/CommonTypes'
import { FileSystemSerializer, serialize, unserialize, SerializedData } from '../../../manager/v2/fileSystem/Serialization'
import { VirtualSerializer } from '../../../manager/v2/instances/VirtualFileSystem'
import { PhysicalSerializer } from '../../../manager/v2/instances/PhysicalFileSystem'
import { RequestContext } from '../RequestContext'
import { IAutoSave, IAutoLoad } from '../WebDAVServerOptions'
import { Readable } from 'stream'
Expand All @@ -12,22 +13,33 @@ import * as fs from 'fs'
function defaultSerializers()
{
return [
new VirtualSerializer()
new VirtualSerializer(),
new PhysicalSerializer()
];
}

export function load(data : SerializedData, serializers : FileSystemSerializer[], callback: (error : Error) => void)
{
serializers = serializers ? serializers : defaultSerializers();
const fSerializers = serializers ? serializers.concat(defaultSerializers()) : defaultSerializers();

unserialize(data, serializers, (e, udata) => {
this.fileSystems = udata;
unserialize(data, fSerializers, (e, udata) => {
if(!e)
this.fileSystems = udata;
callback(e);
})
}

export function autoLoad(callback : SimpleCallback)
{
const options : IAutoLoad = this.options.autoLoad;
let options : IAutoLoad = this.options.autoLoad;
if(!options)
options = { } as IAutoLoad;
if(!options.treeFilePath)
if(!this.options.autoSave.treeFilePath)
return callback(new Error('The "treeFilePath" of the "autoLoad" option is not found.'));
else
options.treeFilePath = this.options.autoSave.treeFilePath;

const oStream = fs.createReadStream(options.treeFilePath);
const stream = oStream.pipe(zlib.createGunzip());

Expand Down Expand Up @@ -66,6 +78,8 @@ export function autoSave(options : IAutoSave)
options.streamProvider = (s, cb) => cb(s);
if(!options.onSaveError)
options.onSaveError = () => {};
if(!options.tempTreeFilePath)
options.tempTreeFilePath = options.treeFilePath + '.tmp';

let saving = false;
let saveRequested = false;
Expand Down

0 comments on commit 14b6e4c

Please sign in to comment.