protected override void OnReceiveAssociateRequest(DcmAssociate association) { association.NegotiateAsyncOps = false; LogID = association.CallingAE; _config = Config.Instance.FindPrinter(association.CalledAE); if (_config == null) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized); return; } foreach (DcmPresContext pc in association.GetPresentationContexts()) { if (pc.AbstractSyntax == DicomUID.VerificationSOPClass || pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass || pc.AbstractSyntax == DicomUID.BasicGrayscalePrintManagementMetaSOPClass || pc.AbstractSyntax == DicomUID.PrinterSOPClass || //pc.AbstractSyntax == DicomUID.PrinterConfigurationRetrieval || //pc.AbstractSyntax == DicomUID.PrintJob || pc.AbstractSyntax == DicomUID.BasicFilmSessionSOPClass || pc.AbstractSyntax == DicomUID.BasicFilmBoxSOPClass || pc.AbstractSyntax == DicomUID.BasicGrayscaleImageBoxSOPClass || pc.AbstractSyntax == DicomUID.BasicColorImageBoxSOPClass) { pc.SetResult(DcmPresContextResult.Accept); } else { pc.SetResult(DcmPresContextResult.RejectAbstractSyntaxNotSupported); } } SendAssociateAccept(association); }
protected override void OnReceiveAssociateRequest(DcmAssociate association) { association.NegotiateAsyncOps = false; LogID = association.CallingAE; foreach (DcmPresContext pc in association.GetPresentationContexts()) { if (pc.AbstractSyntax == DicomUID.VerificationSOPClass) { if (pc.HasTransfer(DicomTransferSyntax.ImplicitVRLittleEndian)) { pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ImplicitVRLittleEndian); } else if (pc.HasTransfer(DicomTransferSyntax.ExplicitVRLittleEndian)) { pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ExplicitVRLittleEndian); } else { pc.SetResult(DcmPresContextResult.RejectTransferSyntaxesNotSupported); } } else { pc.SetResult(DcmPresContextResult.RejectAbstractSyntaxNotSupported); } } SendAssociateAccept(association); }
protected override void OnReceiveAssociateRequest(DcmAssociate association) { association.NegotiateAsyncOps = false; LogID = association.CallingAE; if (OnAssociationRequest != null) { DcmAssociateResult result = OnAssociationRequest(this, association); if (result == DcmAssociateResult.RejectCalledAE) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized); return; } else if (result == DcmAssociateResult.RejectCallingAE) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CallingAENotRecognized); return; } else if (result == DcmAssociateResult.RejectNoReason) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.NoReasonGiven); return; } else { foreach (DcmPresContext pc in association.GetPresentationContexts()) { if (pc.Result == DcmPresContextResult.Proposed) pc.SetResult(DcmPresContextResult.RejectNoReason); } } } else { DcmAssociateProfile profile = DcmAssociateProfile.Find(association, true); profile.Apply(association); } SendAssociateAccept(association); }
private void AddStoragePresentationContexts(DcmAssociate associate) { foreach (DicomUID uid in DicomUID.Entries.Values) { if (uid.Description.Contains("Storage")) { byte pcid = associate.AddPresentationContext(uid); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian); } } }
protected override void OnConnected() { DcmAssociate associate = new DcmAssociate(); byte pcid = associate.AddPresentationContext(_moveSopClass); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian); associate.CalledAE = CalledAE; associate.CallingAE = CallingAE; associate.MaximumPduLength = MaxPduSize; SendAssociateRequest(associate); }
protected override void OnReceiveAssociateRequest(DcmAssociate association) { association.NegotiateAsyncOps = false; LogID = association.CallingAE; if (OnAssociationRequest != null) { DcmAssociateResult result = OnAssociationRequest(this, association); if (result == DcmAssociateResult.RejectCalledAE) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized); return; } else if (result == DcmAssociateResult.RejectCallingAE) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CallingAENotRecognized); return; } else if (result == DcmAssociateResult.RejectNoReason) { SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.NoReasonGiven); return; } else { foreach (DcmPresContext pc in association.GetPresentationContexts()) { if (pc.Result == DcmPresContextResult.Proposed) { pc.SetResult(DcmPresContextResult.RejectNoReason); } } } } else { DcmAssociateProfile profile = DcmAssociateProfile.Find(association, true); profile.Apply(association); } SendAssociateAccept(association); }
protected override void OnConnected() { var associate = new DcmAssociate(); byte pcid = associate.AddPresentationContext(DicomUID.PrinterSOPClass); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian); pcid = associate.AddPresentationContext(DicomUID.BasicGrayscalePrintManagementMetaSOPClass); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian); pcid = associate.AddPresentationContext(DicomUID.BasicColorPrintManagementMetaSOPClass); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian); associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian); associate.CalledAE = CalledAE; associate.CallingAE = CallingAE; associate.MaximumPduLength = MaxPduSize; SendAssociateRequest(associate); }
protected override void OnReceiveAssociateAccept(DcmAssociate association) { SendNextCStoreRequest(); }
protected override void OnConnected() { if (OnCStoreConnected != null) { try { OnCStoreConnected(this); } catch (Exception e) { Log.Error("Unhandled exception in user C-Store Connected Callback: {0}", e.Message); } } if (PendingCount > 0) { DcmAssociate associate = new DcmAssociate(); lock (_lock) { foreach (DicomUID uid in _presContextMap.Keys) { if (_preferredTransferSyntax != null) { if (!_presContextMap[uid].Contains(_preferredTransferSyntax)) { _presContextMap[uid].Remove(_preferredTransferSyntax); } _presContextMap[uid].Insert(0, _preferredTransferSyntax); } if (_offerExplicit && !_presContextMap[uid].Contains(DicomTransferSyntax.ExplicitVRLittleEndian)) { _presContextMap[uid].Add(DicomTransferSyntax.ExplicitVRLittleEndian); } if (!_presContextMap[uid].Contains(DicomTransferSyntax.ImplicitVRLittleEndian)) { _presContextMap[uid].Add(DicomTransferSyntax.ImplicitVRLittleEndian); } if (!DicomUID.IsImageStorage(uid)) { List <DicomTransferSyntax> remove = new List <DicomTransferSyntax>(); foreach (DicomTransferSyntax tx in _presContextMap[uid]) { if (DicomTransferSyntax.IsImageCompression(tx)) { remove.Add(tx); } } foreach (DicomTransferSyntax tx in remove) { _presContextMap[uid].Remove(tx); } } } if (SerializedPresentationContexts) { foreach (DicomUID uid in _presContextMap.Keys) { foreach (DicomTransferSyntax ts in _presContextMap[uid]) { byte pcid = associate.AddPresentationContext(uid); associate.AddTransferSyntax(pcid, ts); } } } else { foreach (DicomUID uid in _presContextMap.Keys) { byte pcid = associate.AddOrGetPresentationContext(uid); foreach (DicomTransferSyntax ts in _presContextMap[uid]) { associate.AddTransferSyntax(pcid, ts); } } } } associate.CalledAE = CalledAE; associate.CallingAE = CallingAE; associate.MaximumPduLength = MaxPduSize; SendAssociateRequest(associate); } else { Close(); } }
protected override void OnReceiveAssociateAccept(DcmAssociate association) { PerformPrinterQueryOrRelease(); }
protected override void OnReceiveAssociateAccept(DcmAssociate association) { byte pcid = association.FindAbstractSyntax(DicomUID.VerificationSOPClass); SendCEchoRequest(pcid, NextMessageID(), Priority); }