@Override
    public Header extract(Metadata headers) {
        final String agentId = headerExtractor.getId(headers, Header.AGENT_ID_KEY);
        String agentName = headerExtractor.getName(headers, Header.AGENT_NAME_KEY);
        if (StringUtils.isEmpty(agentName)) {
            agentName = agentId;
        }

        final String applicationName = headerExtractor.getId(headers, Header.APPLICATION_NAME_KEY);
        final long startTime = headerExtractor.getTime(headers, Header.AGENT_START_TIME_KEY);
        final int serviceType = headerExtractor.getServiceType(headers);
        final long socketId = headerExtractor.getSocketId(headers);
        final List<Integer> supportCommandCodeList = headerExtractor.getSupportCommandCodeList(headers);
        final boolean grpcBuiltInRetry = headerExtractor.getGrpcBuiltInRetry(headers);
        final Map<String, Object> properties = metadataConverter.apply(headers);
        return new HeaderV1(name, agentId, agentName, applicationName, serviceType, startTime, socketId, supportCommandCodeList, grpcBuiltInRetry, properties);
    }
@author Woonduk Kang(emeroad)
@author jaehong.kim
grpc/src/main/java/com/navercorp/pinpoint/grpc/server/ServerHeaderReaderV1.java