@Override
public void sendCeaMessage(int resultCode, Message cer, String errMessage) throws TransportException, OverloadException {
logger.debug("Send CEA message");
IMessage message = parser.createEmptyMessage(Message.CAPABILITIES_EXCHANGE_ANSWER, 0);
message.setRequest(false);
message.setHopByHopIdentifier(cer.getHopByHopIdentifier());
message.setEndToEndIdentifier(cer.getEndToEndIdentifier());
message.getAvps().addAvp(Avp.ORIGIN_HOST, metaData.getLocalPeer().getUri().getFQDN(), true, false, true);
message.getAvps().addAvp(Avp.ORIGIN_REALM, metaData.getLocalPeer().getRealmName(), true, false, true);
for (InetAddress ia : metaData.getLocalPeer().getIPAddresses()) {
message.getAvps().addAvp(Avp.HOST_IP_ADDRESS, ia, true, false);
}
message.getAvps().addAvp(Avp.VENDOR_ID, metaData.getLocalPeer().getVendorId(), true, false, true);
for (ApplicationId appId: metaData.getLocalPeer().getCommonApplications()) {
addAppId(appId, message);
}
message.getAvps().addAvp(Avp.PRODUCT_NAME, metaData.getLocalPeer().getProductName(), false);
message.getAvps().addAvp(Avp.RESULT_CODE, resultCode, true, false, true);
message.getAvps().addAvp(Avp.FIRMWARE_REVISION, metaData.getLocalPeer().getFirmware(), true);
if (errMessage != null) {
message.getAvps().addAvp(Avp.ERROR_MESSAGE, errMessage, false);
}
sendMessage(message);
}