/* Fill in the fields of the given KeyHash based on the key field(s) * of the given instance sample. * Important: The fields of the instance ID cannot all be set to zero! */ @Override public void instance_to_keyhash(Object endpoint_data, KeyHash_t keyhash, Object instance) { DefaultEndpointData endpointData = (DefaultEndpointData) endpoint_data; CdrOutputStream md5Stream = endpointData.get_stream(); CdrBuffer buffer = null; if (md5Stream == null) { throw new RETCODE_ERROR("Missing MD5 stream"); } buffer = md5Stream.getBuffer(); buffer.resetBufferToZero(); md5Stream.resetAndSetDirtyBit(true); serialize_key( endpoint_data, instance, md5Stream, false, CdrEncapsulation.CDR_ENCAPSULATION_ID_CDR_BE, true, null); if (endpointData.get_serialized_key_max_size() > KeyHash_t.KEY_HASH_MAX_LENGTH) { md5Stream.computeMD5(keyhash.value); } else { System.arraycopy(buffer.getBuffer(), 0, keyhash.value, 0, buffer.currentPosition()); System.arraycopy( KeyHash_t.ZERO_KEYHASH.value, buffer.currentPosition(), keyhash.value, buffer.currentPosition(), KeyHash_t.KEY_HASH_MAX_LENGTH - buffer.currentPosition()); } keyhash.length = KeyHash_t.KEY_HASH_MAX_LENGTH; }