| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.NlmEncoder = void 0;
- const Writer_1 = require("@jsonjoy.com/util/lib/buffers/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:
- return;
- case 1:
- return this.writeTestRequest(request);
- case 2:
- return this.writeLockRequest(request);
- case 3:
- return this.writeCancelRequest(request);
- case 4:
- return this.writeUnlockRequest(request);
- case 5:
- return this.writeGrantedRequest(request);
- case 20:
- return this.writeShareRequest(request);
- case 21:
- return this.writeUnshareRequest(request);
- case 22:
- return this.writeNmLockRequest(request);
- case 23:
- return this.writeFreeAllRequest(request);
- default:
- throw new errors_1.Nfsv3EncodingError(`Unknown NLM procedure: ${proc}`);
- }
- }
- writeResponse(response, proc) {
- switch (proc) {
- case 0:
- return;
- case 1:
- return this.writeTestResponse(response);
- case 2:
- case 3:
- case 4:
- case 5:
- case 22:
- return this.writeResponse4(response);
- case 20:
- case 21:
- 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
|