Bgp ser open

a fake serializer for BGP

object bgp_ser_open = {}

<<< member

    class `bgp_ser_open`;

>>>

<<< impl

    class `bgp_ser_open` : public ivy_binary_ser_128 {
        enum {bgp_s_version,
              bgp_s_myas,
              bgp_s_time,
              bgp_s_id,
              bgp_s_optlen,
              bgp_s_opt,
              bgp_s_opt_val,
              bgp_s_opt_len} state;
        long frame_type;
        int payload_length;
        long opt_type;
        long opt_len;

    public:
        bgp_ser_open() : state(bgp_s_version) {
        }
        virtual void  set(int128_t res) {
            switch (state) {
            case bgp_s_version:
            {
                std::cerr << "bgp_s_version 1\n";
                setn(res,1);
                state = bgp_s_myas;
            }
            break;
            case bgp_s_myas:
            {
                std::cerr << "bgp_s_myas 1\n";
                setn(res,2);
                state = bgp_s_time;
                std::cerr << "bgp_s_myas " << state << "\n";
            }
            break;
            case bgp_s_time:
            {
                std::cerr << "bgp_s_time 1\n";
                setn(res,2);
                state = bgp_s_id;
                std::cerr << "bgp_s_time " << state << "\n";
            }
            break;
            case bgp_s_id:
            {
                std::cerr << "bgp_s_id 1\n";
                setn(res,4);
                state = bgp_s_optlen;
                std::cerr << "bgp_s_id " << state << "\n";
            }
            break;
            case bgp_s_optlen:
            {
                std::cerr << "bgp_s_optlen 1\n";
                setn(res,1);
                payload_length = res;
                std::cerr << "payload_length = " << payload_length << "\n";
                state = bgp_s_opt;
            }
            break;
            case bgp_s_opt:
            {
                std::cerr << "bgp_s_opt 1\n";
                setn(res,1);
                payload_length -= 1;
                state = bgp_s_opt_len;
            }
            break;
            case bgp_s_opt_len:
            {
                std::cerr << "bgp_s_opt 1\n";
                setn(res,1);
                payload_length -= 1;
                opt_len = res;
                state = bgp_s_opt_val;

            }
            break;
            case bgp_s_opt_val:
            {
                std::cerr << "bgp_s_opt_val 1\n";
                setn(res,1);
                payload_length -= 1;
            }
            break;
            default:
            std::cerr << "deser_err 42 "  << "\n";
            throw deser_err();
            }
        }


        virtual void open_tag(int tag, const std::string &) {
            std::cerr << "deser_err 43 " << tag << "\n";
            std::cerr << "deser_err 43 " << state << "\n";
            throw deser_err();
        }

        virtual void open_list_elem() {
        }

        void open_list(int len) {

        }
        void close_list() {
        }
        void close_list_elem() {}

        virtual void close_tag() {
        }

        ~bgp_ser_open(){}
    };

>>>