Bgp ser notification
a fake serializer for BGP
object bgp_ser_notification = {}
<<< member
class `bgp_ser_notification`;
>>>
<<< impl
class `bgp_ser_notification` : public ivy_binary_ser_128 {
enum {bgp_s_error_code,
bgp_s_error_subcode,
bgp_s_payload} state;
long frame_type;
int current_bgp_size = 0;
int payload_length = 0;
public:
bgp_ser_notification() : state(bgp_s_error_code) {
}
virtual void set(int128_t res) {
switch (state) {
case bgp_s_error_code:
{
std::cerr << "bgp_s_error_code 1\n";
setn(res,1);
state = bgp_s_error_subcode;
}
break;
case bgp_s_error_subcode:
{
std::cerr << "bgp_s_error_subcode 1\n";
setn(res,1);
state = bgp_s_payload;
}
break;
case bgp_s_payload:
{
std::cerr << "bgp_s_payload 1\n";
setn(res, 8);
}
break;
default:
std::cerr << "deser_err 42 " << "\n";
throw deser_err();
}
}
virtual void open_tag(int tag, const std::string &) {
if (state == bgp_s_payload) {
int128_t ft;
setn(ft,1); // could be bigger ivy_binary_deser_128::
frame_type = ft;
std::cerr << "recv frame_type = " << frame_type << "\n";
//std::cerr << "saw tag " << ft << "\n";
}
std::cerr << "deser_err 43 " << tag << "\n";
std::cerr << "deser_err 43 " << state << "\n";
throw deser_err();
}
virtual void open_list_elem() {
/*if (state == bgp_s_error_code) {
std::cerr << "bgp_s_error_code bgp_ser_notification 2\n";
}
if (state == bgp_s_payload) {
std::cerr << "bgp_s_payload bgp_ser_notification 2\n";
//state = bgp_s_time;
//return payload_length--> 0;
}
std::cerr << "bgp_ser_notification 1\n";
throw deser_err();*/
}
void open_list(int len) {
}
void close_list() {
if (state == bgp_s_payload) {
state = bgp_s_error_code;
}
}
void close_list_elem() {}
virtual void close_tag() {
state = bgp_s_payload;
}
~bgp_ser_notification(){}
};
>>>