/usr/include/gdcm-2.6/gdcmULConnection.h is in libgdcm2-dev 2.6.6-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*=========================================================================
*
* Copyright Insight Software Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef GDCMULCONNECTION_H
#define GDCMULCONNECTION_H
#include "gdcmNetworkStateID.h"
#include "gdcmARTIMTimer.h"
#include "gdcmULConnectionInfo.h"
#include "gdcmPresentationContextRQ.h"
#include "gdcmDataElement.h"
#include "gdcmPresentationContextAC.h"
#include "gdcmPresentationContext.h"
class iosockinet;
class echo;
namespace gdcm{
namespace network{
/**
* \brief ULConnection
* \details This is the class that contains the socket to another machine, and passes
* data through itself, as well as maintaining a sense of state.
*
* The ULConnectionManager tells the ULConnection what data can actually be
* sent.
*
* This class is done this way so that it can be eventually be replaced with a
* ULSecureConnection, if such a protocol is warranted, so that all data that
* passes through can be managed through a secure connection. For now, this
* class provides a simple pass-through mechanism to the socket itself.
*
* So, for instance, a gdcm object will be passes to this object, and it will
* then get passed along the connection, if that connection is in the proper
* state to do so.
*
* For right now, this class is not directly intended to be inherited from, but
* the potential for future ULSecureConnection warrants the addition, rather
* than having everything be managed from within the ULConnectionManager (or
* this class) without a wrapper.
*
*/
class GDCM_EXPORT ULConnection
{
ULConnectionInfo mInfo;
//this is a dirty dirty hack
//but to establish an outgoing connection (scu), we need the echo service
//to establish incoming, we just need a port and localhost, so an iosockinet works while an
//echo would fail (probably because one already exists)
echo* mEcho;
iosockinet* mSocket;//of the three protocols offered by socket++-- echo, smtp, and ftp--
//echo most closely matches what the DICOM standard describes as a network connection
ARTIMTimer mTimer;
EStateID mCurrentState;
std::vector<PresentationContextRQ> mPresentationContexts;
//this is our list of presentation contexts of what we can send
uint32_t mMaxPDUSize;
std::vector<PresentationContextAC> mAcceptedPresentationContexts;//these come back from the server
//and tell us what can be sent over this connection
TransferSyntaxSub cstorets;
friend class ULActionAE6;
void SetCStoreTransferSyntax( TransferSyntaxSub const & ts );
friend class ULConnectionManager;
TransferSyntaxSub const & GetCStoreTransferSyntax( ) const;
public:
ULConnection(const ULConnectionInfo& inUserInformation);
//destructors are virtual to prevent memory leaks by inherited classes
virtual ~ULConnection();
EStateID GetState() const;
void SetState(const EStateID& inState);//must be able to update state...
//echo* GetProtocol();
std::iostream* GetProtocol();
void StopProtocol();
ARTIMTimer& GetTimer();
const ULConnectionInfo &GetConnectionInfo() const;
//when the connection is first associated, the connection is told
//the max packet/PDU size and the way in which to present data
//(presentation contexts, etc). Store that here.
void SetMaxPDUSize(uint32_t inSize);
uint32_t GetMaxPDUSize() const;
const PresentationContextAC *GetPresentationContextACByID(uint8_t id) const;
const PresentationContextRQ *GetPresentationContextRQByID(uint8_t id) const;
/// return 0 upon error
uint8_t GetPresentationContextIDFromPresentationContext(PresentationContextRQ const & pc) const;
std::vector<PresentationContextRQ> const & GetPresentationContexts() const;
void SetPresentationContexts(const std::vector<PresentationContextRQ>& inContexts);
void SetPresentationContexts(const std::vector<PresentationContext>& inContexts);
//given a particular data element, presumably the SOP class,
//find the presentation context for that SOP
//NOT YET IMPLEMENTED
PresentationContextRQ FindContext(const DataElement& de) const;
std::vector<PresentationContextAC> const & GetAcceptedPresentationContexts() const;
std::vector<PresentationContextAC> & GetAcceptedPresentationContexts();
void AddAcceptedPresentationContext(const PresentationContextAC& inPC);
/// used to establish scu connections
bool InitializeConnection();
/// used to establish scp connections
bool InitializeIncomingConnection();
private:
ULConnection(const ULConnection&); // Not implemented.
void operator=(const ULConnection&); // Not implemented.
};
}
}
#endif // ULCONNECTION_H
|