UNPKG

@jsonjoy.com/json-pack

Version:

High-performance JSON serialization library

182 lines 6.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NlmEncoder = void 0; const Writer_1 = require("@jsonjoy.com/buffers/lib/Writer"); const XdrEncoder_1 = require("../../../xdr/XdrEncoder"); const errors_1 = require("../errors"); class NlmEncoder { constructor(writer = new Writer_1.Writer()) { this.writer = writer; this.xdr = new XdrEncoder_1.XdrEncoder(writer); } encodeMessage(message, proc, isRequest) { if (isRequest) this.writeRequest(message, proc); else this.writeResponse(message, proc); return this.writer.flush(); } writeMessage(message, proc, isRequest) { if (isRequest) this.writeRequest(message, proc); else this.writeResponse(message, proc); } writeRequest(request, proc) { switch (proc) { case 0 /* NlmProc.NULL */: return; case 1 /* NlmProc.TEST */: return this.writeTestRequest(request); case 2 /* NlmProc.LOCK */: return this.writeLockRequest(request); case 3 /* NlmProc.CANCEL */: return this.writeCancelRequest(request); case 4 /* NlmProc.UNLOCK */: return this.writeUnlockRequest(request); case 5 /* NlmProc.GRANTED */: return this.writeGrantedRequest(request); case 20 /* NlmProc.SHARE */: return this.writeShareRequest(request); case 21 /* NlmProc.UNSHARE */: return this.writeUnshareRequest(request); case 22 /* NlmProc.NM_LOCK */: return this.writeNmLockRequest(request); case 23 /* NlmProc.FREE_ALL */: return this.writeFreeAllRequest(request); default: throw new errors_1.Nfsv3EncodingError(`Unknown NLM procedure: ${proc}`); } } writeResponse(response, proc) { switch (proc) { case 0 /* NlmProc.NULL */: return; case 1 /* NlmProc.TEST */: return this.writeTestResponse(response); case 2 /* NlmProc.LOCK */: case 3 /* NlmProc.CANCEL */: case 4 /* NlmProc.UNLOCK */: case 5 /* NlmProc.GRANTED */: case 22 /* NlmProc.NM_LOCK */: return this.writeResponse4(response); case 20 /* NlmProc.SHARE */: case 21 /* NlmProc.UNSHARE */: return this.writeShareResponse(response); default: throw new errors_1.Nfsv3EncodingError(`Unknown NLM procedure: ${proc}`); } } writeCookie(cookie) { const data = cookie.uint8; this.xdr.writeVarlenOpaque(data); } writeNetobj(obj) { const data = obj.uint8; this.xdr.writeVarlenOpaque(data); } writeNlm4Holder(holder) { const xdr = this.xdr; xdr.writeBoolean(holder.exclusive); xdr.writeInt(holder.svid); this.writeNetobj(holder.oh); xdr.writeUnsignedHyper(holder.offset); xdr.writeUnsignedHyper(holder.length); } writeNlm4Lock(lock) { const xdr = this.xdr; xdr.writeStr(lock.callerName); this.writeNetobj(lock.fh); this.writeNetobj(lock.oh); xdr.writeInt(lock.svid); xdr.writeUnsignedHyper(lock.offset); xdr.writeUnsignedHyper(lock.length); } writeNlm4Share(share) { const xdr = this.xdr; xdr.writeStr(share.callerName); this.writeNetobj(share.fh); this.writeNetobj(share.oh); xdr.writeUnsignedInt(share.mode); xdr.writeUnsignedInt(share.access); } writeTestArgs(args) { this.writeCookie(args.cookie); this.xdr.writeBoolean(args.exclusive); this.writeNlm4Lock(args.lock); } writeLockArgs(args) { const xdr = this.xdr; this.writeCookie(args.cookie); xdr.writeBoolean(args.block); xdr.writeBoolean(args.exclusive); this.writeNlm4Lock(args.lock); xdr.writeBoolean(args.reclaim); xdr.writeInt(args.state); } writeCancelArgs(args) { const xdr = this.xdr; this.writeCookie(args.cookie); xdr.writeBoolean(args.block); xdr.writeBoolean(args.exclusive); this.writeNlm4Lock(args.lock); } writeUnlockArgs(args) { this.writeCookie(args.cookie); this.writeNlm4Lock(args.lock); } writeShareArgs(args) { this.writeCookie(args.cookie); this.writeNlm4Share(args.share); this.xdr.writeBoolean(args.reclaim); } writeTestRequest(req) { this.writeTestArgs(req.args); } writeTestResponse(res) { const xdr = this.xdr; this.writeCookie(res.cookie); xdr.writeUnsignedInt(res.stat); if (res.stat === 1 && res.holder) { this.writeNlm4Holder(res.holder); } } writeLockRequest(req) { this.writeLockArgs(req.args); } writeResponse4(res) { this.writeCookie(res.cookie); this.xdr.writeUnsignedInt(res.stat); } writeCancelRequest(req) { this.writeCancelArgs(req.args); } writeUnlockRequest(req) { this.writeUnlockArgs(req.args); } writeGrantedRequest(req) { this.writeTestArgs(req.args); } writeShareRequest(req) { this.writeShareArgs(req.args); } writeShareResponse(res) { const xdr = this.xdr; this.writeCookie(res.cookie); xdr.writeUnsignedInt(res.stat); xdr.writeInt(res.sequence); } writeUnshareRequest(req) { this.writeShareArgs(req.args); } writeNmLockRequest(req) { this.writeLockArgs(req.args); } writeFreeAllRequest(req) { const xdr = this.xdr; xdr.writeStr(req.notify.name); xdr.writeInt(req.notify.state); } } exports.NlmEncoder = NlmEncoder; //# sourceMappingURL=NlmEncoder.js.map