Initial import
This commit is contained in:
commit
1459d5293b
32
Errors.js
Normal file
32
Errors.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
const Fuse = require('fuse-native')
|
||||||
|
|
||||||
|
module.exports = exports = {
|
||||||
|
InvalidReplyUUID: 'INVALID_REPLY_UUID',
|
||||||
|
InvalidMessageRoute: 'INVALID_MESSAGE_ROUTE',
|
||||||
|
|
||||||
|
NodeDoesNotExist: 'NODE_DOES_NOT_EXIST',
|
||||||
|
NodeAlreadyExists: 'NODE_ALREADY_EXISTS',
|
||||||
|
NodePermissionFail: 'NODE_PERMISSION_FAIL',
|
||||||
|
NodeNotEmpty: 'NODE_NOT_EMPTY',
|
||||||
|
NotDirectoryDescriptor: 'NOT_DIRECTORY_DESCRIPTOR',
|
||||||
|
IsDirectoryDescriptor: 'IS_DIRECTORY_DESCRIPTOR',
|
||||||
|
NoSuchDescriptor: 'NO_SUCH_DESCRIPTOR',
|
||||||
|
|
||||||
|
toCallback(cb, error) {
|
||||||
|
if ( error === module.exports.NodeDoesNotExist ) {
|
||||||
|
return process.nextTick(cb, Fuse.ENOENT)
|
||||||
|
} else if ( error === module.exports.NodeAlreadyExists ) {
|
||||||
|
return process.nextTick(cb, Fuse.EEXIST)
|
||||||
|
} else if ( error === module.exports.NodePermissionFail ) {
|
||||||
|
return process.nextTick(cb, Fuse.EACCES)
|
||||||
|
} else if ( error === module.exports.NodeNotEmpty ) {
|
||||||
|
return process.nextTick(cb, Fuse.ENOTEMPTY)
|
||||||
|
} else if ( error === module.exports.NotDirectoryDescriptor ) {
|
||||||
|
return process.nextTick(cb, Fuse.ENOTDIR)
|
||||||
|
} else if ( error === module.exports.IsDirectoryDescriptor ) {
|
||||||
|
return process.nextTick(cb, Fuse.EISDIR)
|
||||||
|
} else {
|
||||||
|
return process.nextTick(cb, Fuse.EBADMSG)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
94
Message.js
Normal file
94
Message.js
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
const uuid = require('uuid').v4;
|
||||||
|
|
||||||
|
class Message {
|
||||||
|
needs_response = false;
|
||||||
|
has_response = false;
|
||||||
|
socket;
|
||||||
|
sender;
|
||||||
|
|
||||||
|
get socket_send() {
|
||||||
|
if ( this.sender ) {
|
||||||
|
return this.sender;
|
||||||
|
} else {
|
||||||
|
return (...args) => this.socket.send(...args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static route(route) {
|
||||||
|
const msg = new this();
|
||||||
|
return msg.route(route);
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(message = '{}') {
|
||||||
|
this._data = JSON.parse(message)
|
||||||
|
this._uuid = this._data.uuid || uuid()
|
||||||
|
}
|
||||||
|
|
||||||
|
fresh() {
|
||||||
|
const inst = new this.constructor()
|
||||||
|
inst.socket = this.socket
|
||||||
|
inst.sender = this.sender
|
||||||
|
return inst
|
||||||
|
}
|
||||||
|
|
||||||
|
error(set = undefined) {
|
||||||
|
if ( set ) {
|
||||||
|
this._data.error = set;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._data.error;
|
||||||
|
}
|
||||||
|
|
||||||
|
response_to(req_uuid = undefined) {
|
||||||
|
if ( req_uuid ) {
|
||||||
|
this._data.in_response_to = req_uuid;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._data.in_response_to;
|
||||||
|
}
|
||||||
|
|
||||||
|
is_response() {
|
||||||
|
return !!this._data.in_response_to;
|
||||||
|
}
|
||||||
|
|
||||||
|
route(set = undefined) {
|
||||||
|
if ( set ) {
|
||||||
|
this._data.route = set;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._data.route;
|
||||||
|
}
|
||||||
|
|
||||||
|
data(set = undefined) {
|
||||||
|
if ( set ) {
|
||||||
|
this._data.data = set;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._data.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
uuid() {
|
||||||
|
return this._uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
serialize() {
|
||||||
|
return JSON.stringify({...this._data, uuid: this._uuid});
|
||||||
|
}
|
||||||
|
|
||||||
|
expect_response(callback = () => {}) {
|
||||||
|
this.needs_response = true;
|
||||||
|
this._response_callback = callback;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
send_response(other_message) {
|
||||||
|
other_message.response_to(this.uuid())
|
||||||
|
this.socket_send(other_message.serialize())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = exports = Message
|
Loading…
Reference in New Issue
Block a user