/** * Starts a active association to a communication partner. See PS 3.8 - 7.1 A-ASSOCIATE SERVICE * * @return true, if association was successful established. * @exception ConnectException * @exception IOException * @exception GeneralSecurityException */ public boolean aASSOCIATE() throws ConnectException, IOException, GeneralSecurityException { // No association may be active if (assoc != null) { throw new ConnectException("Association already established"); } // New Association object for establishing an active association assoc = aFact.newRequestor(newSocket(url.getHost(), url.getPort())); // >>>> Fill the Association object with relevant data assoc.setAcTimeout(acTimeout); assoc.setDimseTimeout(dimseTimeout); assoc.setSoCloseDelay(soCloseDelay); assoc.setPackPDVs(packPDVs); // 1. Create an communication channel to the communication partner defined in the Association // object // 2. Send the A-ASSOCIATE-RQ package // 3. Receive the aAssociation acknowlage/reject package from the communication partner as a PDU // (Protocol Data Unit) PDU assocAC = assoc.connect(assocRQ); if (!(assocAC instanceof AAssociateAC)) { // Acknowlage is A-ASSOCIATE-RJ // Association rejected assoc = null; // Return aASSOCIATE faild return false; } // Acknowlage is A-ASSOCIATE_AC // Association accepted // Start the accepted association // API doc: AssociationFactory.newActiveAssociation(Association assoc, DcmServiceRegistry // services) aassoc = aFact.newActiveAssociation(assoc, null); aassoc.start(); // Return successfull opened return true; }