root/src/add-ons/kernel/file_systems/netfs/server/RequestBufferReplacer.h
// RequestBufferReplacer.h

#ifndef NET_FS_REQUEST_BUFFER_REPLACER_H
#define NET_FS_REQUEST_BUFFER_REPLACER_H

#include "Request.h"

class RequestBufferReplacer : private RequestMemberVisitor {
public:
                                                                RequestBufferReplacer();
                                                                ~RequestBufferReplacer();

                        status_t                        ReplaceBuffer(Request* request);

private:
        virtual void                            Visit(RequestMember* member, bool& data);
        virtual void                            Visit(RequestMember* member, int8& data);
        virtual void                            Visit(RequestMember* member, uint8& data);
        virtual void                            Visit(RequestMember* member, int16& data);
        virtual void                            Visit(RequestMember* member, uint16& data);
        virtual void                            Visit(RequestMember* member, int32& data);
        virtual void                            Visit(RequestMember* member, uint32& data);
        virtual void                            Visit(RequestMember* member, int64& data);
        virtual void                            Visit(RequestMember* member, uint64& data);
        virtual void                            Visit(RequestMember* member, Data& data);
        virtual void                            Visit(RequestMember* member, StringData& data);
        virtual void                            Visit(RequestMember* member,
                                                                        RequestMember& subMember);
        virtual void                            Visit(RequestMember* member,
                                                                        FlattenableRequestMember& subMember);

private:
                        char*                           fBuffer;
                        int32                           fBufferSize;
};

#endif  // NET_FS_REQUEST_BUFFER_REPLACER_H