#ifndef ProtoGenWrapper_DRequest_H
#define ProtoGenWrapper_DRequest_H

#include "MySerializable.h"

#include <string>

#include "DiagService.h"

namespace ProtoGenWrapper
{
	class DRequest : public MySerializable
	{
	public:
		DRequest() = default;
		DRequest(const DiagService& diagService, const std::string& shortName, const std::string& longName, const std::string& pduString);
		DRequest(const std::string& data);

		void SetDiagService(const DiagService& result);
		DiagService GetDiagService() const;
		void SetShortName(const std::string& name);
		std::string GetShortName() const;
		void SetLongName(const std::string& longName);
		std::string GetLongName() const;
		void SetPduString(const std::string& pduString);
		std::string GetPduString() const;
		
		void Serialize(std::string* output) const override;
		void Deserialize(const std::string& data) override;

	protected:
		DiagService _diagService;
		std::string _shortName;
		std::string _longName;
		std::string _pduString;
	};
}
#endif // ProtoGenWrapper_DRequest_H
