#ifndef __GNET_TITLEBEAN_RPCDATA
#define __GNET_TITLEBEAN_RPCDATA

#include "rpcdefs.h"


namespace GNET
{
	class TitleBean : public GNET::Rpc::Data
	{
	public:
		int titleid;
		Octets titlename;
		std::vector<int64_t> members;

	public:
		TitleBean ()
		{
		}

		TitleBean(const TitleBean &rhs)
			: titleid(rhs.titleid),titlename(rhs.titlename),members(rhs.members) { }

		Rpc::Data *Clone() const { return new TitleBean(*this); }

		Rpc::Data& operator = (const Rpc::Data &rhs)
		{
			const TitleBean *r = dynamic_cast<const TitleBean *>(&rhs);
			if (r && r != this)
			{
				titleid = r->titleid;
				titlename = r->titlename;
				members = r->members;
			}
			return *this;
		}

		TitleBean& operator = (const TitleBean &rhs)
		{
			const TitleBean *r = &rhs;
			if (r && r != this)
			{
				titleid = r->titleid;
				titlename = r->titlename;
				members = r->members;
			}
			return *this;
		}

		OctetsStream& marshal(OctetsStream & os) const
		{
			os << titleid;
			os << titlename;
			os << members;
			return os;
		}

		const OctetsStream& unmarshal(const OctetsStream &os)
		{
			os >> titleid;
			os >> titlename;
			os >> members;
			return os;
		}

	};
	typedef GNET::RpcDataVector<TitleBean>	TitleBeanVector;
};
#endif
