@waku/relay
Version:
Relay Protocol for Waku
31 lines • 1.23 kB
JavaScript
import { TopicValidatorResult } from "@libp2p/interface";
import { proto_message as proto } from "@waku/proto";
import { Logger } from "@waku/utils";
const log = new Logger("relay");
export function messageValidator(peer, message) {
const startTime = performance.now();
log.info(`validating message from ${peer} received on ${message.topic}`);
let result = TopicValidatorResult.Accept;
try {
const protoMessage = proto.WakuMessage.decode(message.data);
if (!protoMessage.contentTopic ||
!protoMessage.contentTopic.length ||
!protoMessage.payload ||
!protoMessage.payload.length) {
result = TopicValidatorResult.Reject;
}
}
catch (e) {
result = TopicValidatorResult.Reject;
}
const endTime = performance.now();
const timeTakenMs = endTime - startTime;
if (timeTakenMs > 100) {
log.warn(`message validation took ${timeTakenMs}ms for peer ${peer} on topic ${message.topic}. This should be less than 100ms.`);
}
else {
log.info(`message validation took ${timeTakenMs}ms for peer ${peer} on topic ${message.topic}`);
}
return result;
}
//# sourceMappingURL=message_validator.js.map