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(){}
    };

>>>