dcmnet/include/dcmtk/dcmnet/assoc.h

00001 /*
00002 **  Copyright (C) 1993/1994, OFFIS, Oldenburg University and CERIUM
00003 **
00004 **  This software and supporting documentation were
00005 **  developed by
00006 **
00007 **    Institut OFFIS
00008 **    Bereich Kommunikationssysteme
00009 **    Westerstr. 10-12
00010 **    26121 Oldenburg, Germany
00011 **
00012 **    Fachbereich Informatik
00013 **    Abteilung Prozessinformatik
00014 **    Carl von Ossietzky Universitaet Oldenburg
00015 **    Ammerlaender Heerstr. 114-118
00016 **    26111 Oldenburg, Germany
00017 **
00018 **    CERIUM
00019 **    Laboratoire SIM
00020 **    Faculte de Medecine
00021 **    2 Avenue du Pr. Leon Bernard
00022 **    35043 Rennes Cedex, France
00023 **
00024 **  for CEN/TC251/WG4 as a contribution to the Radiological
00025 **  Society of North America (RSNA) 1993 Digital Imaging and
00026 **  Communications in Medicine (DICOM) Demonstration.
00027 **
00028 **  THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND NEITHER OFFIS,
00029 **  OLDENBURG UNIVERSITY NOR CERIUM MAKE ANY WARRANTY REGARDING
00030 **  THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR
00031 **  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER
00032 **  DISEASES OR ITS CONFORMITY TO ANY SPECIFICATION.  THE
00033 **  ENTIRE RISK AS TO QUALITY AND PERFORMANCE OF THE SOFTWARE
00034 **  IS WITH THE USER.
00035 **
00036 **  Copyright of the software and supporting documentation
00037 **  is, unless otherwise stated, jointly owned by OFFIS,
00038 **  Oldenburg University and CERIUM and free access is hereby
00039 **  granted as a license to use this software, copy this
00040 **  software and prepare derivative works based upon this
00041 **  software. However, any distribution of this software
00042 **  source code or supporting documentation or derivative
00043 **  works (source code and supporting documentation) must
00044 **  include the three paragraphs of this copyright notice.
00045 **
00046 */
00047 /*
00048 **
00049 ** Author: Andrew Hewett    Created: 03-06-93
00050 **
00051 ** Module: association
00052 **
00053 ** Purpose:
00054 **  This file contains the routines which provide association management
00055 **  for DICOM applications.  It maintains structures which describe
00056 **  active associations and provides access to association specific
00057 **  informtion.  Also provided are routines for aiding association
00058 **  negotiation (presentation contexts, abstract syntaxes, transfer
00059 **  syntaxes, maximum PDU length, and other extended negotiation).
00060 **
00061 **  This package uses the facilities of the DICOM Upper Layer for
00062 **  receiving/sending association requests/responses.
00063 **
00064 **  Each active association is represented by an T_ASC_Association
00065 **  structure which contains all relevant information.
00066 **
00067 **  Module Prefix: ASC_
00068 **
00069 **
00070 ** Last Update:   $Author: joergr $
00071 ** Update Date:   $Date: 2010-10-14 13:17:21 $
00072 ** CVS/RCS Revision:  $Revision: 1.32 $
00073 ** Status:    $State: Exp $
00074 **
00075 ** CVS/RCS Log at end of file
00076 */
00077 
00078 
00079 #ifndef ASSOCIATION_H
00080 #define ASSOCIATION_H
00081 
00082 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
00083 
00084 /*
00085 ** Required Include Files
00086 */
00087 #include "dcmtk/dcmnet/dicom.h"
00088 #include "dcmtk/dcmnet/lst.h"
00089 #include "dcmtk/dcmnet/dul.h"
00090 
00091 /*
00092 ** Constant Definitions
00093 */
00094 
00095 /*
00096  * There have been reports that smaller PDUs work better in some environments.
00097  * Allow a 4K minimum and a 128K maximum. Any further extension requires
00098  * modifications in the DUL code.
00099  */
00100 #define ASC_DEFAULTMAXPDU       16384 /* 16K is default if nothing else specified */
00101 #define ASC_MINIMUMPDUSIZE       4096
00102 #define ASC_MAXIMUMPDUSIZE     131072 /* 128K - we only handle this big */
00103 
00104 /*
00105 ** Type Definitions
00106 */
00107 
00108 /*
00109 ** Network initialization structure.
00110 ** Is a wrapper for DUL functionality.
00111 */
00112 
00113 enum T_ASC_NetworkRole
00114 {
00115     NET_ACCEPTOR,   /* Provider Only */
00116     NET_REQUESTOR,    /* User Only */
00117     NET_ACCEPTORREQUESTOR /* User and Provider */
00118 };
00119 
00120 struct T_ASC_Network
00121 {
00122     T_ASC_NetworkRole   role;
00123     int               acceptorPort;
00124     DUL_NETWORKKEY      *network;
00125 };
00126 
00127 
00128 /*
00129 ** Association negotiation parameters.
00130 **
00131 */
00132 
00133 
00134 /* not defined anywhere (I think) but a hard limitation for now.
00135  * DICOM (1998) defines 22 transfer syntaxes, this upper limit
00136  * should allow for sufficiently many private transfer syntaxes.
00137  */
00138 #define DICOM_MAXTRANSFERSYNTAXES 50
00139 
00140 
00141 typedef DUL_PRESENTATIONCONTEXTID T_ASC_PresentationContextID;
00142 
00143 enum T_ASC_P_ResultReason
00144 { /* Part 8, pp 45. */
00145     ASC_P_ACCEPTANCE              = 0,
00146     ASC_P_USERREJECTION               = 1,
00147     ASC_P_NOREASON                  = 2,
00148     ASC_P_ABSTRACTSYNTAXNOTSUPPORTED    = 3,
00149     ASC_P_TRANSFERSYNTAXESNOTSUPPORTED  = 4,
00150     ASC_P_NOTYETNEGOTIATED              = 255
00151 };
00152 
00153 enum T_ASC_SC_ROLE
00154 {
00155     ASC_SC_ROLE_NONE,
00156     ASC_SC_ROLE_DEFAULT,
00157     ASC_SC_ROLE_SCU,
00158     ASC_SC_ROLE_SCP,
00159     ASC_SC_ROLE_SCUSCP
00160 };
00161 
00162 struct T_ASC_PresentationContext
00163 {
00164     T_ASC_PresentationContextID presentationContextID;
00165     DIC_UI      abstractSyntax;
00166     unsigned char     transferSyntaxCount;
00167     DIC_UI    proposedTransferSyntaxes[DICOM_MAXTRANSFERSYNTAXES];
00168     DIC_UI      acceptedTransferSyntax;
00169     T_ASC_P_ResultReason  resultReason;
00170     T_ASC_SC_ROLE     proposedRole;
00171     T_ASC_SC_ROLE   acceptedRole;
00172 };
00173 
00174 enum T_ASC_RejectParametersResult
00175 {
00176     ASC_RESULT_REJECTEDPERMANENT      = 1,
00177     ASC_RESULT_REJECTEDTRANSIENT      = 2
00178 };
00179 
00180 enum T_ASC_RejectParametersSource
00181 {
00182     ASC_SOURCE_SERVICEUSER                          = 1,
00183     ASC_SOURCE_SERVICEPROVIDER_ACSE_RELATED         = 2,
00184     ASC_SOURCE_SERVICEPROVIDER_PRESENTATION_RELATED = 3
00185 };
00186 
00187 enum T_ASC_RejectParametersReason
00188 { /* the following values are coded by DUL */
00189     /* Service User reasons */
00190     ASC_REASON_SU_NOREASON                          = 0x0101,
00191     ASC_REASON_SU_APPCONTEXTNAMENOTSUPPORTED        = 0x0102,
00192     ASC_REASON_SU_CALLINGAETITLENOTRECOGNIZED       = 0x0103,
00193     ASC_REASON_SU_CALLEDAETITLENOTRECOGNIZED        = 0x0107,
00194     /* Service Provider ACSE Related reasons */
00195     ASC_REASON_SP_ACSE_NOREASON                     = 0x0201,
00196     ASC_REASON_SP_ACSE_PROTOCOLVERSIONNOTSUPPORTED  = 0x0202,
00197     /* Service Provider Presentation Related reasons */
00198     ASC_REASON_SP_PRES_TEMPORARYCONGESTION          = 0x0301,
00199     ASC_REASON_SP_PRES_LOCALLIMITEXCEEDED           = 0x0302
00200 };
00201 
00202 struct T_ASC_RejectParameters
00203 {
00204     T_ASC_RejectParametersResult result;
00205     T_ASC_RejectParametersSource source;
00206     T_ASC_RejectParametersReason reason;
00207 };
00208 
00209 
00210 struct T_ASC_Parameters
00211 {
00212     DIC_UI ourImplementationClassUID;
00213     DIC_SH ourImplementationVersionName;
00214     DIC_UI theirImplementationClassUID;
00215     DIC_SH theirImplementationVersionName;
00216     DUL_ModeCallback *modeCallback;
00217 
00218     DUL_ASSOCIATESERVICEPARAMETERS DULparams;
00219     /*
00220      * DICOM Upper Layer service parameters.  They should only be
00221      * accessed via functions defined below.
00222      */
00223 
00224     long ourMaxPDUReceiveSize;    /* we say what we can receive */
00225     long theirMaxPDUReceiveSize;  /* they say what we can send */
00226 
00227 };
00228 
00229 /*
00230 ** Association structure containing all association specific
00231 ** information.
00232 */
00233 struct T_ASC_Association
00234 {
00235     DUL_ASSOCIATIONKEY *DULassociation;
00236     T_ASC_Parameters *params;
00237 
00238     unsigned short nextMsgID;         /* should be incremented by user */
00239     unsigned long sendPDVLength;  /* max length of PDV to send out */
00240     unsigned char *sendPDVBuffer; /* buffer of size sendPDVLength */
00241 };
00242 
00243 /*
00244 ** Public Function Prototypes
00245 */
00246 
00257 OFCondition ASC_initializeNetwork(
00258     T_ASC_NetworkRole role,
00259     int acceptorPort,
00260     int timeout,
00261     T_ASC_Network ** network,
00262     unsigned long options = 0);
00263 
00268 OFCondition ASC_dropNetwork(T_ASC_Network ** network);
00269 
00270 /*
00271  * Building Association parameters
00272  */
00273 
00274 OFCondition
00275 ASC_createAssociationParameters(
00276     T_ASC_Parameters ** params,
00277     long maxReceivePDUSize);
00278 
00279 OFCondition
00280 ASC_destroyAssociationParameters(
00281     T_ASC_Parameters ** params);
00282 
00283 /* set transport layer type in association parameters */
00284 OFCondition
00285 ASC_setTransportLayerType(
00286     T_ASC_Parameters * params,
00287     OFBool useSecureLayer);
00288 
00289 OFCondition
00290 ASC_setAPTitles(
00291     T_ASC_Parameters * params,
00292     const char* callingAPTitle,
00293     const char* calledAPTitle,
00294     const char* respondingAPTitle);
00295 
00296 OFCondition
00297 ASC_getAPTitles(
00298     T_ASC_Parameters * params,
00299     char* callingAPTitle,
00300     char* calledAPTitle,
00301     char* respondingAPTitle);
00302 
00303 OFCondition
00304 ASC_getApplicationContextName(
00305     T_ASC_Parameters * params,
00306     char* applicationContextName);
00307 
00308 OFCondition
00309 ASC_setPresentationAddresses(
00310     T_ASC_Parameters * params,
00311     const char* callingPresentationAddress,
00312     const char* calledPresentationAddress);
00313 
00314 OFCondition
00315 ASC_getPresentationAddresses(
00316     T_ASC_Parameters * params,
00317     char* callingPresentationAddress,
00318     char* calledPresentationAddress);
00319 
00320 OFCondition
00321 ASC_getRejectParameters(
00322     T_ASC_Parameters * params,
00323     T_ASC_RejectParameters * rejectParameters);
00324 
00325 OFString&
00326 ASC_printRejectParameters(
00327     OFString& str,
00328     T_ASC_RejectParameters *rej);
00329 
00330 OFCondition
00331 ASC_addPresentationContext(
00332     T_ASC_Parameters * params,
00333     T_ASC_PresentationContextID presentationContextID,
00334     const char* abstractSyntax,
00335     const char* transferSyntaxList[],
00336     int transferSyntaxListCount,
00337     T_ASC_SC_ROLE proposedRole = ASC_SC_ROLE_DEFAULT);
00338 
00339 int
00340 ASC_countPresentationContexts(
00341     T_ASC_Parameters * params);
00342 
00343 int
00344 ASC_countAcceptedPresentationContexts(
00345     T_ASC_Parameters * params);
00346 
00347 OFCondition
00348 ASC_getPresentationContext(
00349     T_ASC_Parameters * params,
00350     int listPosition,
00351     T_ASC_PresentationContext * presentationContext);
00352 
00353 OFCondition
00354 ASC_acceptPresentationContext(
00355     T_ASC_Parameters * params,
00356     T_ASC_PresentationContextID presentationContextID,
00357     const char* transferSyntax,
00358     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00359 
00360 OFCondition
00361 ASC_acceptContextsWithPreferredTransferSyntaxes(
00362     T_ASC_Parameters * params,
00363     const char* abstractSyntaxes[], int abstractSyntaxCount,
00364     const char* transferSyntaxes[], int transferSyntaxCount,
00365     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00366 
00367 OFCondition
00368 ASC_acceptContextsWithTransferSyntax(
00369     T_ASC_Parameters * params,
00370     const char* transferSyntax, int abstractSyntaxCount,
00371     const char* abstractSyntaxes[],
00372     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00373 
00374 OFCondition
00375 ASC_refusePresentationContext(
00376     T_ASC_Parameters * params,
00377     T_ASC_PresentationContextID presentationContextID,
00378     T_ASC_P_ResultReason resultReason);
00379 
00380 OFCondition
00381 ASC_findAcceptedPresentationContext(
00382     T_ASC_Parameters * params,
00383     T_ASC_PresentationContextID presentationContextID,
00384     T_ASC_PresentationContext * presentationContext);
00385 
00386 T_ASC_PresentationContextID
00387 ASC_findAcceptedPresentationContextID(
00388     T_ASC_Association *assoc,
00389     const char* abstractSyntax);
00390 
00391 T_ASC_PresentationContextID
00392 ASC_findAcceptedPresentationContextID(
00393     T_ASC_Association *assoc,
00394     const char* abstractSyntax,
00395     const char * transferSyntax);
00396 
00397 /* extended negotiation */
00398 void ASC_getRequestedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList** extNegList);
00399 void ASC_getAcceptedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList** extNegList);
00400 void ASC_setRequestedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList* extNegList);
00401 void ASC_setAcceptedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList* extNegList);
00402 
00403 /* user identity negotiation */
00404 
00405 /* function that returns user identity request structure from association
00406  * parameters.
00407  * @param params - [in] The parameters to read from
00408  * @param usrIdentAC - [out] The result pointer to user identity request
00409  */
00410 void ASC_getUserIdentRQ(T_ASC_Parameters* params, UserIdentityNegotiationSubItemRQ** usrIdentRQ);
00411 
00412 /* function that returns user identity response structure from association
00413  * parameters. Note: For accessing the User Identity response value,
00414  *  it is more convenient to use the function ASC_getCopyOfIdentResponse().
00415  * @param params - [in] The parameters to read from
00416  * @param usrIdentAC - [out] The result pointer to user identity response
00417  * @return none
00418  */
00419 void ASC_getUserIdentAC(T_ASC_Parameters* params, UserIdentityNegotiationSubItemAC** usrIdentAC);
00420 
00428 OFCondition
00429 ASC_setIdentRQUserPassword(
00430     T_ASC_Parameters * params,
00431     const OFString& userName,
00432     const OFString& password,
00433     const OFBool& requestRsp = OFTrue);
00434 
00441 OFCondition
00442 ASC_setIdentRQUserOnly(
00443     T_ASC_Parameters * params,
00444     const OFString& userName,
00445     const OFBool& requestRsp = OFTrue);
00446 
00453 OFCondition
00454 ASC_setIdentRQKerberos(
00455     T_ASC_Parameters * params,
00456     const char* kerbTicket,
00457     const Uint16& length,
00458     const OFBool& requestRsp = OFTrue);
00459 
00466 OFCondition
00467 ASC_setIdentRQSaml(
00468     T_ASC_Parameters * params,
00469     const char* saml,
00470     const Uint16& length,
00471     const OFBool& requestRsp = OFTrue);
00472 
00473 
00480 OFCondition ASC_setIdentAC(
00481     T_ASC_Parameters * params,
00482     const char* response,
00483     const Uint16& length );
00484 
00497 void
00498 ASC_getCopyOfIdentResponse(T_ASC_Parameters * params,
00499                            void*& buffer,
00500                            unsigned short& bufferLen);
00501 
00502 /* TLS/SSL */
00503 
00504 /* get peer certificate from open association */
00505 unsigned long ASC_getPeerCertificateLength(T_ASC_Association *assoc);
00506 unsigned long ASC_getPeerCertificate(T_ASC_Association *assoc, void *buf, unsigned long bufLen);
00507 
00508 /* set new transport layer object */
00509 OFCondition
00510 ASC_setTransportLayer(T_ASC_Network *network, DcmTransportLayer *newLayer, int takeoverOwnership);
00511 
00512 enum ASC_associateType
00513 {
00514     ASC_ASSOC_RQ,
00515     ASC_ASSOC_AC,
00516     ASC_ASSOC_RJ
00517 };
00518 
00519 OFString&
00520 ASC_dumpParameters(OFString& str, T_ASC_Parameters * param, ASC_associateType dir);
00521 
00522 OFString&
00523 ASC_dumpConnectionParameters(OFString& str, T_ASC_Association *association);
00524 
00525 void ASC_activateCallback(T_ASC_Parameters *params, DUL_ModeCallback *cb);
00526 
00527 /*
00528  * Association Inquiries
00529  */
00530 
00531 OFBool
00532 ASC_associationWaiting(T_ASC_Network * network, int timeout);
00533 
00534 OFBool
00535 ASC_dataWaiting(T_ASC_Association * association, int timeout);
00536 
00537 OFBool
00538 ASC_selectReadableAssociation(
00539     T_ASC_Association* assocs[],
00540     int assocCount, int timeout);
00541 
00542 /*
00543  * Association Messages
00544  */
00545 
00546 OFCondition
00547 ASC_requestAssociation(
00548     T_ASC_Network * network,
00549     T_ASC_Parameters * params,  /* params will be saved
00550          * in the association
00551          * structure */
00552     T_ASC_Association ** association,
00553     void **associatePDU=NULL,
00554     unsigned long *associatePDUlength=NULL);
00555 
00556 OFCondition
00557 ASC_receiveAssociation(
00558     T_ASC_Network * network,
00559     T_ASC_Association ** association,
00560     long maxReceivePDUSize,
00561     void **associatePDU=NULL,
00562     unsigned long *associatePDUlength=NULL,
00563     OFBool useSecureLayer=OFFalse,
00564     DUL_BLOCKOPTIONS block=DUL_BLOCK,
00565     int timeout=0);
00566 
00567 OFCondition
00568 ASC_acknowledgeAssociation(
00569     T_ASC_Association * assoc,
00570     void **associatePDU=NULL,
00571     unsigned long *associatePDUlength=NULL);
00572 
00573 OFCondition
00574 ASC_rejectAssociation(
00575     T_ASC_Association * association,
00576     T_ASC_RejectParameters * rejectParameters,
00577     void **associatePDU=NULL,
00578     unsigned long *associatePDUlength=NULL);
00579 
00580 OFCondition
00581 ASC_releaseAssociation(T_ASC_Association * association);
00582 
00583 OFCondition
00584 ASC_acknowledgeRelease(T_ASC_Association * association);
00585 
00586 OFCondition
00587 ASC_abortAssociation(T_ASC_Association * association);
00588 
00589 OFCondition
00590 ASC_dropSCPAssociation(T_ASC_Association * association, int timeout = DUL_TIMEOUT);
00591 
00592 OFCondition
00593 ASC_dropAssociation(T_ASC_Association * association);
00594 
00595 OFCondition
00596 ASC_destroyAssociation(T_ASC_Association ** association);
00597 
00599 void
00600 ASC_printRejectParameters(
00601     FILE *f,
00602     T_ASC_RejectParameters *rej);
00603 
00605 void
00606 ASC_printRejectParameters(
00607     STD_NAMESPACE ostream& out,
00608     T_ASC_RejectParameters *rej);
00609 
00614 void
00615 ASC_dumpParameters(T_ASC_Parameters * params, STD_NAMESPACE ostream& outstream);
00616 
00618 void
00619 ASC_dumpPresentationContext(T_ASC_PresentationContext * presentationContext, STD_NAMESPACE ostream& outstream);
00620 
00625 void
00626 ASC_dumpConnectionParameters(T_ASC_Association *association, STD_NAMESPACE ostream& outstream);
00627 
00628 
00629 #endif
00630 
00631 /*
00632 ** CVS Log
00633 ** $Log: assoc.h,v $
00634 ** Revision 1.32  2010-10-14 13:17:21  joergr
00635 ** Updated copyright header. Added reference to COPYRIGHT file.
00636 **
00637 ** Revision 1.31  2010-10-01 12:25:29  uli
00638 ** Fixed most compiler warnings in remaining modules.
00639 **
00640 ** Revision 1.30  2010-08-26 09:26:41  joergr
00641 ** Fixed incorrect behavior of association acceptors during SCP/SCU role
00642 ** selection negotiation.
00643 **
00644 ** Revision 1.29  2009-11-18 11:53:58  uli
00645 ** Switched to logging mechanism provided by the "new" oflog module.
00646 **
00647 ** Revision 1.28  2008-10-07 09:07:47  onken
00648 ** Added code for accessing user identity from the server's side.
00649 **
00650 ** Revision 1.27  2008-04-17 15:28:33  onken
00651 ** Reworked and extended User Identity Negotiation code.
00652 **
00653 ** Revision 1.26  2007-09-07 08:49:12  onken
00654 ** Added basic support for Extended Negotiation of User Identity.
00655 **
00656 ** Revision 1.25  2006/08/15 16:04:29  meichel
00657 ** Updated the code in module dcmnet to correctly compile when
00658 **   all standard C++ classes remain in namespace std.
00659 **
00660 ** Revision 1.24  2005/12/08 16:02:06  meichel
00661 ** Changed include path schema for all DCMTK header files
00662 **
00663 ** Revision 1.23  2004/07/15 08:10:45  meichel
00664 ** Added optional timeout parameter to ASC_dropSCPAssociation().
00665 **
00666 ** Revision 1.22  2004/04/07 10:22:09  meichel
00667 ** Added optional parameter to ASC_initializeNetwork that allows to pass
00668 **   the DUL_FULLDOMAINNAME option to the DUL layer
00669 **
00670 ** Revision 1.21  2004/02/25 12:31:15  meichel
00671 ** Added global option flag for compatibility with very old DCMTK releases in the
00672 **   DICOM upper layer and ACSE code. Default is automatic handling, which should
00673 **   work in most cases.
00674 **
00675 ** Revision 1.20  2003/06/10 13:42:07  meichel
00676 ** Replaced unnamed C style structs by C++ declarations
00677 **
00678 ** Revision 1.19  2002/07/10 11:43:55  meichel
00679 ** Replaced dcmnet specific definitions for implementation class UID and
00680 **   version name by the constants defined in dcmdata.
00681 **
00682 ** Revision 1.18  2001/11/27 09:54:33  wilkens
00683 ** Updated storescp. 6 new options (--output-directory, --sort-conc-studies,
00684 ** --exec-on-reception, --exec-on-eostudy, --rename-on-eostudy, and
00685 ** --eostudy-timeout) implemented (requirements from GO-Kard).
00686 **
00687 ** Revision 1.17  2001/10/12 10:18:25  meichel
00688 ** Replaced the CONDITION types, constants and functions in the dcmnet module
00689 **   by an OFCondition based implementation which eliminates the global condition
00690 **   stack.  This is a major change, caveat emptor!
00691 **
00692 ** Revision 1.16  2001/09/28 13:23:46  joergr
00693 ** Added forward declaration of "ostream" to keep gcc 3.0 quiet.
00694 **
00695 ** Revision 1.15  2000/10/10 12:06:05  meichel
00696 ** Added version of function ASC_printRejectParameters that takes
00697 **   an STD_NAMESPACE ostream& instead of a FILE*
00698 **
00699 ** Revision 1.14  2000/08/10 14:50:52  meichel
00700 ** Added initial OpenSSL support.
00701 **
00702 ** Revision 1.13  2000/06/07 13:56:20  meichel
00703 ** Output stream now passed as mandatory parameter to ASC_dumpParameters.
00704 **
00705 ** Revision 1.12  2000/06/07 08:57:21  meichel
00706 ** dcmnet ACSE routines now allow to retrieve a binary copy of the A-ASSOCIATE
00707 **   RQ/AC/RJ PDUs, e.g. for logging purposes.
00708 **
00709 ** Revision 1.11  2000/05/30 13:07:41  joergr
00710 ** Added a condition value to report the external request for a shutdown of
00711 ** the application (used for imagectn).
00712 **
00713 ** Revision 1.10  1999/09/06 13:28:31  meichel
00714 ** Enhanced max receive PDU range to 4-128K.
00715 **
00716 ** Revision 1.9  1999/04/26 17:20:55  meichel
00717 ** Added new "transfer syntax aware" variant of the dcmnet function
00718 **   ASC_findAcceptedPresentationContextID. This variant tries to find an
00719 **   accepted presentation context that matches both abstract and transfer syntax.
00720 **
00721 ** Revision 1.8  1999/04/21 13:01:23  meichel
00722 ** Increased max. number of transfer syntaxes that
00723 **   can be managed in an A-ASSOCIATE packet from 25 to 50.
00724 **
00725 ** Revision 1.7  1999/04/19 08:39:27  meichel
00726 ** Added experimental support for extended SOP class negotiation.
00727 **
00728 ** Revision 1.6  1997/08/05 07:38:08  andreas
00729 ** Corrected error in DUL finite state machine
00730 ** SCPs shall close sockets after the SCU have closed the socket in
00731 ** a normal association release. Therfore, an ARTIM timer is described
00732 ** in DICOM part 8 that is not implemented correctly in the
00733 ** DUL. Since the whole DUL finite state machine is affected, we
00734 ** decided to solve the proble outside the fsm. Now it is necessary to call the
00735 ** ASC_DropSCPAssociation() after the calling ASC_acknowledgeRelease().
00736 **
00737 ** Revision 1.5  1997/07/21 08:40:08  andreas
00738 ** - Replace all boolean types (BOOLEAN, CTNBOOLEAN, DICOM_BOOL, BOOL)
00739 **   with one unique boolean type OFBool.
00740 **
00741 ** Revision 1.4  1997/05/05 13:05:53  meichel
00742 ** Removed unused constant DICOM_MAXPRESENTATIONCONTEXTS.
00743 **
00744 ** Revision 1.3  1997/05/05 10:30:08  meichel
00745 ** Fixed bugs related to association negotiation in the DICOM upper layer module.
00746 ** Added application tests/assctest.cc to examine handling of large A-ASSOCIATE
00747 ** PDUs. See CHANGES file for details.
00748 **
00749 ** Revision 1.2  1996/04/25 16:06:27  hewett
00750 ** Replaced declarations of DIC_UL with unsigned long.
00751 **
00752 ** Revision 1.1.1.1  1996/03/26 18:38:44  hewett
00753 ** Initial Release.
00754 **
00755 **
00756 */


Generated on 30 Nov 2010 for OFFIS DCMTK Version 3.5.5 20101130 by Doxygen 1.5.1