	public:
		int priority;
		std::string msg;
		std::string hostname;
		std::string servicename;
		enum { PROTOCOL_TYPE = PROTOCOL_STATINFOVITAL };
	public:
		StatInfoVital() { type = PROTOCOL_STATINFOVITAL; }
		StatInfoVital(void*) : Protocol(PROTOCOL_STATINFOVITAL) { }
		StatInfoVital (int l_priority,const std::string& l_msg = std::string(),const std::string& l_hostname = std::string(),
			const std::string& l_servicename = std::string())
			 : priority(l_priority),msg(l_msg),hostname(l_hostname)
			,servicename(l_servicename)
		{
			type = PROTOCOL_STATINFOVITAL;
		}

		StatInfoVital(const StatInfoVital &rhs)
			: Protocol(rhs),priority(rhs.priority),msg(rhs.msg),hostname(rhs.hostname)
			,servicename(rhs.servicename) { }

		GNET::Protocol *Clone() const { return new StatInfoVital(*this); }

		OctetsStream& marshal(OctetsStream & os) const
		{
			os << priority;
			os << msg;
			os << hostname;
			os << servicename;
			return os;
		}

		const OctetsStream& unmarshal(const OctetsStream &os)
		{
			os >> priority;
			os >> msg;
			os >> hostname;
			os >> servicename;
			return os;
		}

		int PriorPolicy( ) const { return 1; }

		bool SizePolicy(size_t size) const { return size <= 1024; }
