Esempio n. 1
0
/**
 * パケットオブジェクトからホストリストアイテムを生成する。
 * @param packet パケットオブジェクト
 * @retval ホストリストアイテム
 */
HostListItem
HostList::CreateHostListItemFromPacket( const Packet& packet )
{
	IPMSG_FUNC_ENTER( "HostListItem HostList::CreateHostListItemFromPacket( const Packet& packet )" );
	HostListItem ret;
	ret.setHostName( packet.HostName() );
	ret.setUserName( packet.UserName() );
	ret.setCommandNo( packet.CommandMode() | packet.CommandOption() );
	ret.setIpAddress( getSockAddrInRawAddress( packet.Addr() ) );
	ret.setPortNo( ntohs( getSockAddrInPortNo( packet.Addr() ) ) );
	unsigned int loc = packet.Option().find_first_of( '\0' );
	if ( loc == std::string::npos ) {
		ret.setNickname( packet.Option() );
		ret.setGroupName( "" );
	} else {
		ret.setNickname( packet.Option().substr( 0, loc ) );
		ret.setGroupName( packet.Option().substr( loc + 1 ) );
	}
	IPMSG_FUNC_RETURN( ret );
}