1
0
mirror of https://github.com/falk-werner/webfuse-provider synced 2024-09-30 20:30:45 +00:00
falk-werner_webfuse-provider/src/app/www/js/filesystem_handler.js

78 lines
2.6 KiB
JavaScript
Raw Normal View History

2019-01-28 21:08:37 +00:00
class FileSystemHandler {
constructor(filesystem, connection) {
this._fs = filesystem;
this._connection = connection;
this._connection.onmessage = (message) => {
this._onmessage(message);
};
}
_onmessage(message) {
try {
let request = JSON.parse(message.data);
let result = -42;
let response;
console.log(request);
if (("string" === typeof(request.method)) &&
("number" === typeof(request.id)) &&
(request.params)) {
switch(request.method)
{
case "getattr":
2019-01-29 22:47:08 +00:00
{
const path = request.params[0];
result = this._fs.getattr(path);
}
break;
2019-01-28 21:08:37 +00:00
case "readdir":
2019-01-29 22:47:08 +00:00
{
const path = request.params[0];
result = this._fs.readdir(path);
}
break;
2019-01-28 21:08:37 +00:00
case "open":
2019-01-29 22:47:08 +00:00
{
const path = request.params[0];
const mode = request.params[1];
result = this._fs.open(path, mode);
}
break;
case "close":
{
const path = request.params[0];
const handle = request.params[1];
const mode = request.params[2];
result = this._fs.open(path, handle, mode);
}
break;
2019-01-28 21:08:37 +00:00
case "read":
2019-01-29 22:47:08 +00:00
{
const path = request.params[0];
const handle = request.params[1];
const offset = request.params[2];
const length = request.params[3];
result = this._fs.read(path, handle, offset, length);
}
break;
2019-01-28 21:08:37 +00:00
default:
break;
}
if ("number" !== typeof(result)) {
response = {result: result, id: request.id};
}
else {
response = {error: {code: result}, id: request.id};
}
console.log(response);
this._connection.send(JSON.stringify(response));
}
}
catch (ex) { console.log(ex, message); }
};
}