• E
    util: Export remoteDeserializeTypedParameters internally via util · 0472cef6
    Erik Skultety 提交于
    Currently, the deserializer is hardcoded into remote_driver which makes
    it impossible for admin to use it. One way to achieve a shared implementation
    (besides moving the code to another module) would be pass @ret_params_val as a
    void pointer as opposed to the remote_typed_param pointer and add a new extra
    argument specifying which of those two protocols is being used and typecast
    the pointer at the function entry. An example from remote_protocol:
    
    struct remote_typed_param_value {
            int type;
            union {
                    int i;
                    u_int ui;
                    int64_t l;
                    uint64_t ul;
                    double d;
                    int b;
                    remote_nonnull_string s;
            } remote_typed_param_value_u;
    };
    typedef struct remote_typed_param_value remote_typed_param_value;
    
    struct remote_typed_param {
            remote_nonnull_string field;
            remote_typed_param_value value;
    };
    
    That would leave us with a bunch of if-then-elses that needed to be used across
    the method. This patch takes the other approach using the new datatype
    introduced in one of earlier commits.
    0472cef6
virtypedparam.h 4.7 KB