All files / lib MessageFactory.ts

70.59% Statements 24/34
33.33% Branches 5/15
100% Functions 1/1
70.59% 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 1275x   1275x     20x   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);
    }
}