Skip to content

Commit 0da807d

Browse files
committed
feat: 🎸 add initial formatter implementation
1 parent 9c63340 commit 0da807d

File tree

5 files changed

+766
-10
lines changed

5 files changed

+766
-10
lines changed

src/nfs/v4/Nfsv4Decoder.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Reader} from '@jsonjoy.com/buffers/lib/Reader';
22
import {XdrDecoder} from '../../xdr/XdrDecoder';
3-
import {Nfsv4Op, Nfsv4CbOp, Nfsv4FType, Nfsv4DelegType} from './constants';
3+
import {Nfsv4Op, Nfsv4CbOp, Nfsv4FType, Nfsv4DelegType, Nfsv4Stat} from './constants';
44
import {Nfsv4DecodingError} from './errors';
55
import * as msg from './messages';
66
import * as structs from './structs';
@@ -229,14 +229,6 @@ export class Nfsv4Decoder {
229229
return new structs.Nfsv4Verifier(data);
230230
}
231231

232-
// TODO: Why is this not used?
233-
private readTime(): structs.Nfsv4Time {
234-
const xdr = this.xdr;
235-
const seconds = xdr.readHyper();
236-
const nseconds = xdr.readUnsignedInt();
237-
return new structs.Nfsv4Time(seconds, nseconds);
238-
}
239-
240232
private readStateid(): structs.Nfsv4Stateid {
241233
const xdr = this.xdr;
242234
const seqid = xdr.readUnsignedInt();
@@ -247,6 +239,7 @@ export class Nfsv4Decoder {
247239
private readBitmap(): structs.Nfsv4Bitmap {
248240
const xdr = this.xdr;
249241
const count = xdr.readUnsignedInt();
242+
if (count > 8) throw Nfsv4Stat.NFS4ERR_BADXDR;
250243
const mask: number[] = [];
251244
for (let i = 0; i < count; i++) mask.push(xdr.readUnsignedInt());
252245
return new structs.Nfsv4Bitmap(mask);

src/nfs/v4/attributes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,9 @@ export const STAT_ATTRS = new Set<Nfsv4Attr>([
205205

206206
/**
207207
* Extract attribute numbers from a bitmap mask.
208+
*
209+
* @todo PERF: More efficient would be to parse to `Array<number>` and
210+
* also use `Array<number>` for {@link overlap} calculation.
208211
*/
209212
export const parseBitmask = (mask: number[]): Set<number> => {
210213
const attrs = new Set<number>();

0 commit comments

Comments
 (0)