int deserialize(T &dst, char const *const buffer, int const dataLeft) const { BinRec const *const bin = (BinRec const *) buffer; int const dataLen = ntohs(bin->len); if (dataLeft < REC_MINSIZE + dataLen) { return 0; } if (!validator_(*bin)) { return -1; } if (!deserializer_(dst, *bin)) { return -1; } return REC_MINSIZE + dataLen; }
void operator()(T const& t) const { validator_(t); }