public static AReleaseRP Parse(UnparsedPdu raw) { if (raw.length() != 4) { throw new PduException("Illegal A-RELEASE-RQ " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.INVALID_PDU_PARAMETER_VALUE)); } return instance; }
public virtual PduI readFrom(System.IO.Stream ins, byte[] buf) { UnparsedPdu raw = new UnparsedPdu(ins, buf); switch (raw.GetType()) { case 1: return AAssociateRQ.Parse(raw); case 2: return AAssociateAC.Parse(raw); case 3: return AAssociateRJ.Parse(raw); case 4: return PDataTF.Parse(raw); case 5: return AReleaseRQ.Parse(raw); case 6: return AReleaseRP.Parse(raw); case 7: return AAbort.Parse(raw); default: throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU)); } }
internal static AAssociateAC Parse(UnparsedPdu raw) { return (AAssociateAC) new AAssociateAC().Init(raw); }
internal static AAssociateRJ Parse(UnparsedPdu raw) { if (raw.length() != 4) { throw new PduException("Illegal A-ASSOCIATE-RJ " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.INVALID_PDU_PARAMETER_VALUE)); } return new AAssociateRJ(raw.buffer()); }
/// <summary> /// Read from network socket /// </summary> /// <param name="timeout"></param> /// <param name="buf"></param> /// <returns></returns> public PduI Read(int timeout, byte[] buf) { try { UnparsedPdu raw = null; s.ReceiveTimeout = timeout; try { raw = new UnparsedPdu(stream, buf); } catch (IOException e) { ChangeState(STA1); throw e; } return raw != null ? state.Parse(raw) : null; } catch (IOException ioe) { if (assocListener != null) assocListener.Error(assoc, ioe); throw ioe; } }
internal override PduI Parse(UnparsedPdu raw) { try { switch (raw.GetType()) { case 1: m_fsm.FireReceived(m_fsm.rq = AAssociateRQ.Parse(raw)); m_fsm.ChangeState(m_fsm.STA3); return m_fsm.rq; case 2: case 3: case 4: case 5: case 6: throw new PduException("Unexpected " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU)); case 7: m_fsm.FireReceived(m_fsm.aa = AAbort.Parse(raw)); m_fsm.ChangeState(m_fsm.STA1); return m_fsm.aa; default: throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU)); } } catch (PduException ule) { try { Write(ule.AAbort); } catch (System.Exception ignore) { } throw ule; } }
internal override PduI Parse(UnparsedPdu raw) { try { switch (raw.GetType()) { case 1: case 2: case 3: throw new PduException("Unexpected " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU)); case 4: return m_fsm.FireReceived(PDataTF.Parse(raw)); case 5: PduI pdu = m_fsm.FireReceived(AReleaseRQ.Parse(raw)); m_fsm.ChangeState(m_fsm.requestor?m_fsm.STA9:m_fsm.STA10); return pdu; case 6: m_fsm.FireReceived(pdu = AReleaseRP.Parse(raw)); m_fsm.ChangeState(m_fsm.STA1); return pdu; case 7: m_fsm.FireReceived(m_fsm.aa = AAbort.Parse(raw)); m_fsm.ChangeState(m_fsm.STA1); return m_fsm.aa; default: throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU)); } } catch (PduException ule) { try { Write(ule.AAbort); } catch (System.Exception ignore) { } throw ule; } }
public static AAssociateRQ Parse(UnparsedPdu raw) { return (AAssociateRQ) new AAssociateRQ().Init(raw); }
public static PDataTF Parse(UnparsedPdu raw) { if (raw.buffer() == null) { throw new PduException("Pdu length exceeds supported maximum " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED)); } return new PDataTF(raw.length(), raw.buffer()); }
protected virtual AAssociateRQAC Init(UnparsedPdu raw) { if (raw.buffer() == null) { throw new PduException("Pdu length exceeds supported maximum " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED)); } ByteBuffer bb = ByteBuffer.Wrap( raw.buffer(), 6, raw.length(), ByteOrder.BIG_ENDIAN ); try { version = bb.ReadInt16(); // Protocol version bb.Skip(2); // Skip 2 bytes calledAET = bb.ReadString(16); // Called AET callingAET = bb.ReadString(16); // Calling AET if( bb.Skip(32) != 32) { throw new EndOfStreamException(); } while( bb.Position < bb.Length ) { int itemType = bb.ReadByte(); // Item type bb.Skip(); // Skip one byte int itemLen = bb.ReadInt16(); // Item length switch (itemType) { case 0x10: appCtxUID = bb.ReadString(itemLen); break; case 0x20: case 0x21: if (itemType != pctype()) { throw new PduException("unexpected item type " + System.Convert.ToString(itemType, 16) + 'H', new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU_PARAMETER)); } AddPresContext(new PresContext(itemType, bb, itemLen)); break; case 0x50: ReadUserInfo(bb, itemLen); break; default: throw new PduException("unrecognized item type " + System.Convert.ToString(itemType, 16) + 'H', new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU_PARAMETER)); } } } catch (PduException e) { throw e; } catch (System.Exception e) { throw new PduException("Failed to parse " + raw, e, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED)); } return this; }
internal static AAbort Parse(UnparsedPdu raw) { if (raw.length() != 4) { throw new PduException("Illegal A-ABORT " + raw, new AAbort(SERVICE_PROVIDER, INVALID_PDU_PARAMETER_VALUE)); } return new AAbort(raw.buffer()); }