@Override public void copyFrom(InputStream in) throws IOException { checkThread(); for (;;) { flushPDataTF(); int copy = in.read(buf, pos, free()); if (copy == -1) return; pos += copy; } }
private void encodeStringItem(int type, String s) { if (s == null) return; encodeItemHeader(type, s.length()); putString(s); }
@Override public void close() { checkThread(); encodePDVHeader(PDVType.LAST); }
@Override public void write(int b) throws IOException { checkThread(); flushPDataTF(); put(b); }
private void encode(AAssociateRQAC rqac, int pduType, int pcItemType) { rqac.checkCallingAET(); rqac.checkCalledAET(); int pdulen = rqac.length(); if (buf.length < 6 + pdulen) buf = new byte[6 + pdulen]; pos = 0; put(pduType); put(0); putInt(pdulen); putShort(rqac.getProtocolVersion()); put(0); put(0); encodeAET(rqac.getCalledAET()); encodeAET(rqac.getCallingAET()); put(rqac.getReservedBytes(), 0, 32); encodeStringItem(ItemType.APP_CONTEXT, rqac.getApplicationContext()); for (PresentationContext pc : rqac.getPresentationContexts()) encode(pc, pcItemType); encodeUserInfo(rqac); }
private void encode(ExtendedNegotiation extNeg) { encodeItemHeader(ItemType.EXT_NEG, extNeg.length()); encode(extNeg.getSOPClassUID()); put(extNeg.getInformation()); }
private void encodeUserInfo(AAssociateRQAC rqac) { encodeItemHeader(ItemType.USER_INFO, rqac.userInfoLength()); encodeMaxPDULength(rqac.getMaxPDULength()); encodeStringItem(ItemType.IMPL_CLASS_UID, rqac.getImplClassUID()); if (rqac.isAsyncOps()) encodeAsyncOpsWindow(rqac); for (RoleSelection rs : rqac.getRoleSelections()) encode(rs); encodeStringItem(ItemType.IMPL_VERSION_NAME, rqac.getImplVersionName()); for (ExtendedNegotiation extNeg : rqac.getExtendedNegotiations()) encode(extNeg); for (CommonExtendedNegotiation extNeg : rqac.getCommonExtendedNegotiations()) encode(extNeg); encode(rqac.getUserIdentityRQ()); encode(rqac.getUserIdentityAC()); }
@Override public void write(byte[] b, int off, int len) throws IOException { checkThread(); int pos = off; int remaining = len; while (remaining > 0) { flushPDataTF(); int write = Math.min(remaining, free()); put(b, pos, write); pos += write; remaining -= write; } }
private void encode(CommonExtendedNegotiation extNeg) { encodeItemHeader(ItemType.COMMON_EXT_NEG, extNeg.length()); encode(extNeg.getSOPClassUID()); encode(extNeg.getServiceClassUID()); putShort(extNeg.getRelatedGeneralSOPClassUIDsLength()); for (String cuid : extNeg.getRelatedGeneralSOPClassUIDs()) encode(cuid); }
private void encode(PresentationContext pc, int pcItemType) { encodeItemHeader(pcItemType, pc.length()); put(pc.getPCID()); put(0); put(pc.getResult()); put(0); encodeStringItem(ItemType.ABSTRACT_SYNTAX, pc.getAbstractSyntax()); for (String ts : pc.getTransferSyntaxes()) encodeStringItem(ItemType.TRANSFER_SYNTAX, ts); }
private void encode(UserIdentityAC userIdentity) { if (userIdentity == null) return; encodeItemHeader(ItemType.AC_USER_IDENTITY, userIdentity.length()); encode(userIdentity.getServerResponse()); }
private void encodeAsyncOpsWindow(AAssociateRQAC rqac) { encodeItemHeader(ItemType.ASYNC_OPS_WINDOW, 4); putShort(rqac.getMaxOpsInvoked()); putShort(rqac.getMaxOpsPerformed()); }
private void flushPDataTF() throws IOException { if (free() > 0) return; encodePDVHeader(PDVType.PENDING); as.writePDataTF(); }
private void encodeMaxPDULength(int maxPDULength) { encodeItemHeader(ItemType.MAX_PDU_LENGTH, 4); putInt(maxPDULength); }
Association(ApplicationEntity ae, Connection local, Socket sock) throws IOException { this.connectTime = System.currentTimeMillis(); this.serialNo = prevSerialNo.incrementAndGet(); this.ae = ae; this.requestor = ae != null; this.name = "" + sock.getLocalSocketAddress() + delim() + sock.getRemoteSocketAddress() + '(' + serialNo + ')'; this.conn = local; this.device = local.getDevice(); this.monitor = device.getAssociationMonitor(); this.sock = sock; this.in = sock.getInputStream(); this.out = sock.getOutputStream(); this.encoder = new PDUEncoder(this, out); if (requestor) { enterState(State.Sta4); } else { enterState(State.Sta2); startRequestTimeout(); } activate(); }
if (Dimse.LOG.isDebugEnabled() && !(dataWriter instanceof DataWriterAdapter)) Dimse.LOG.debug("{} << {} Dataset sent", as, dimse.toString(cmd)); close();
private void encode(AAssociateRQAC rqac, int pduType, int pcItemType) { rqac.checkCallingAET(); rqac.checkCalledAET(); int pdulen = rqac.length(); if (buf.length < 6 + pdulen) buf = new byte[6 + pdulen]; pos = 0; put(pduType); put(0); putInt(pdulen); putShort(rqac.getProtocolVersion()); put(0); put(0); encodeAET(rqac.getCalledAET()); encodeAET(rqac.getCallingAET()); put(rqac.getReservedBytes(), 0, 32); encodeStringItem(ItemType.APP_CONTEXT, rqac.getApplicationContext()); for (PresentationContext pc : rqac.getPresentationContexts()) encode(pc, pcItemType); encodeUserInfo(rqac); }
private void encode(RoleSelection rs) { encodeItemHeader(ItemType.ROLE_SELECTION, rs.length()); encode(rs.getSOPClassUID()); put(rs.isSCU() ? 1 : 0); put(rs.isSCP() ? 1 : 0); }
private void encodeUserInfo(AAssociateRQAC rqac) { encodeItemHeader(ItemType.USER_INFO, rqac.userInfoLength()); encodeMaxPDULength(rqac.getMaxPDULength()); encodeStringItem(ItemType.IMPL_CLASS_UID, rqac.getImplClassUID()); if (rqac.isAsyncOps()) encodeAsyncOpsWindow(rqac); for (RoleSelection rs : rqac.getRoleSelections()) encode(rs); encodeStringItem(ItemType.IMPL_VERSION_NAME, rqac.getImplVersionName()); for (ExtendedNegotiation extNeg : rqac.getExtendedNegotiations()) encode(extNeg); for (CommonExtendedNegotiation extNeg : rqac.getCommonExtendedNegotiations()) encode(extNeg); encode(rqac.getUserIdentityRQ()); encode(rqac.getUserIdentityAC()); }