All files / lib MessageFactory.ts

70.58% Statements 24/34
33.33% Branches 5/15
100% Functions 1/1
70.58% Lines 24/34

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 601x 1x 1x 1x 1x 1x   1x 1x 1x 1x 1x 1x 1x 1x 1x 1x   1x 1273x   1273x     18x   1x                               493x   266x   494x                          
import { AcceptChannelMessage } from './messages/AcceptChannelMessage';
import { ChannelAnnouncementMessage } from './messages/ChannelAnnouncementMessage';
import { ChannelUpdateMessage } from './messages/ChannelUpdateMessage';
import { ErrorMessage } from './messages/ErrorMessage';
import { GossipTimestampFilterMessage } from './messages/GossipTimestampFilterMessage';
import { InitMessage } from './messages/InitMessage';
import { IWireMessage } from './messages/IWireMessage';
import { NodeAnnouncementMessage } from './messages/NodeAnnouncementMessage';
import { OpenChannelMessage } from './messages/OpenChannelMessage';
import { PingMessage } from './messages/PingMessage';
import { PongMessage } from './messages/PongMessage';
import { QueryChannelRangeMessage } from './messages/QueryChannelRangeMessage';
import { QueryShortChannelIdsMessage } from './messages/QueryShortChannelIdsMessage';
import { ReplyChannelRangeMessage } from './messages/ReplyChannelRangeMessage';
import { ReplyShortChannelIdsEndMessage } from './messages/ReplyShortChannelIdsEndMessage';
import { ShutdownMessage } from './messages/ShutdownMessage';
import { MessageType } from './MessageType';
 
export function deserialize(buffer: Buffer): IWireMessage {
  const type = buffer.readUInt16BE(0);
 
  switch (type) {
    // control messages
    case MessageType.Init:
      return InitMessage.deserialize(buffer);
    case MessageType.Error:
      return ErrorMessage.deserialize(buffer);
    case MessageType.Ping:
      return PingMessage.deserialize(buffer);
    case MessageType.Pong:
      return PongMessage.deserialize(buffer);
 
    // channel messages
    case MessageType.OpenChannel:
      return OpenChannelMessage.deserialize(buffer);
    case MessageType.AcceptChannel:
      return AcceptChannelMessage.deserialize(buffer);
    case MessageType.Shutdown:
      return ShutdownMessage.deserialize(buffer);
 
    // gossip messages
    case MessageType.NodeAnnouncement:
      return NodeAnnouncementMessage.deserialize(buffer);
    case MessageType.ChannelAnnouncement:
      return ChannelAnnouncementMessage.deserialize(buffer);
    case MessageType.ChannelUpdate:
      return ChannelUpdateMessage.deserialize(buffer);
    case MessageType.QueryShortChannelIds:
      return QueryShortChannelIdsMessage.deserialize(buffer);
    case MessageType.ReplyShortChannelIdsEnd:
      return ReplyShortChannelIdsEndMessage.deserialize(buffer);
    case MessageType.QueryChannelRange:
      return QueryChannelRangeMessage.deserialize(buffer);
    case MessageType.ReplyChannelRange:
      return ReplyChannelRangeMessage.deserialize(buffer);
    case MessageType.GossipTimestampFilter:
      return GossipTimestampFilterMessage.deserialize(buffer);
  }
}