# All files / lib/messages DlcIds.ts

19.23% Statements 5/26
0% Branches 0/2
0% Functions 0/4
20% Lines 5/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    681x

    1x

    1x
    1x

    1x

     import { BufferReader, BufferWriter } from '@node-dlc/bufio';

    import { MessageType } from '../MessageType';
    import { IDlcMessage } from './DlcMessage';

    /**
     * DlcIds message contains list of buffers
     */
    export class DlcIds implements IDlcMessage {
      public static type = MessageType.DlcIds;

      public static deserialize(buf: Buffer): DlcIds {
        const reader = new BufferReader(buf);

        const type = Number(reader.readUInt16BE());

        switch (type) {
          case MessageType.DlcIdsV0:
            return DlcIds.deserializeV0(buf);
          default:
            throw new Error(`DLC IDs message type must be DlcIdsV0`);
        }
      }

      /**
       * Deserializes an dlc_ids message
       * @param buf
       */
      private static deserializeV0(buf: Buffer): DlcIds {
        const instance = new DlcIds();
        const reader = new BufferReader(buf);

        reader.readUInt16BE(); // read type
        const idsLen = reader.readBigSize(); // ids length

        for (let i = 0; i < idsLen; i++) {
          instance.ids.push(reader.readBytes(32));
        }

        return instance;
      }

      /**
       * The type for dlc_ids message
       */
      public type = DlcIds.type;

      public ids: Buffer[] = [];

      /**
       * Serializes the dlc_ids message into a Buffer
       */
      public serialize(): Buffer {
        const writer = new BufferWriter();
        writer.writeUInt16BE(this.type);
        writer.writeBigSize(this.ids.length);
        for (const id of this.ids) {
          writer.writeBytes(id);
        }

        return writer.toBuffer();
      }
    }

    // Legacy support - keeping old class name as alias
    export const DlcIdsV0 = DlcIds;
    export type DlcIdsV0 = DlcIds;