GDCM  2.2.4
gdcmULConnection.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef GDCMULCONNECTION_H
19 #define GDCMULCONNECTION_H
20 
21 #include "gdcmNetworkStateID.h"
22 #include "gdcmARTIMTimer.h"
23 #include "gdcmULConnectionInfo.h"
25 #include "gdcmDataElement.h"
28 
29 class iosockinet;
30 class echo;
31 namespace gdcm{
32  namespace network{
33 
58 {
59  ULConnectionInfo mInfo;
60  //this is a dirty dirty hack
61  //but to establish an outgoing connection (scu), we need the echo service
62  //to establish incoming, we just need a port and localhost, so an iosockinet works while an
63  //echo would fail (probably because one already exists)
64  echo* mEcho;
65  iosockinet* mSocket;//of the three protocols offered by socket++-- echo, smtp, and ftp--
66  //echo most closely matches what the DICOM standard describes as a network connection
67  ARTIMTimer mTimer;
68 
69  ULConnection(ULConnection& inConnection); //no copy construction allowed
70 
71  EStateID mCurrentState;
72 
73  std::vector<PresentationContextRQ> mPresentationContexts;
74  //this is our list of presentation contexts of what we can send
75  uint32_t mMaxPDUSize;
76 
77  std::vector<PresentationContextAC> mAcceptedPresentationContexts;//these come back from the server
78  //and tell us what can be sent over this connection
79 
80  public:
81 
82  ULConnection(const ULConnectionInfo& inUserInformation);
83  //destructors are virtual to prevent memory leaks by inherited classes
84  virtual ~ULConnection();
85 
86  EStateID GetState() const;
87  void SetState(const EStateID& inState);//must be able to update state...
88 
89  //echo* GetProtocol();
90  std::iostream* GetProtocol();
91  void StopProtocol();
92 
94 
95  const ULConnectionInfo &GetConnectionInfo() const;
96 
97  //when the connection is first associated, the connection is told
98  //the max packet/PDU size and the way in which to present data
99  //(presentation contexts, etc). Store that here.
100  void SetMaxPDUSize(uint32_t inSize);
101  uint32_t GetMaxPDUSize() const;
102 
103  const PresentationContextAC *GetPresentationContextACByID(uint8_t id) const;
104  const PresentationContextRQ *GetPresentationContextRQByID(uint8_t id) const;
105 
108 
109  std::vector<PresentationContextRQ> const & GetPresentationContexts() const;
110  void SetPresentationContexts(const std::vector<PresentationContextRQ>& inContexts);
111 
112  void SetPresentationContexts(const std::vector<PresentationContext>& inContexts);
113 
114  //given a particular data element, presumably the SOP class,
115  //find the presentation context for that SOP
116  //NOT YET IMPLEMENTED
118 
119  std::vector<PresentationContextAC> const & GetAcceptedPresentationContexts() const;
120  std::vector<PresentationContextAC> & GetAcceptedPresentationContexts();
122 
124  bool InitializeConnection();
125 
128 private:
129  ULConnection(const ULConnection&); // Not implemented.
130  void operator=(const ULConnection&); // Not implemented.
131 
132  };
133  }
134 }
135 
136 #endif // ULCONNECTION_H

Generated on Wed Aug 14 2013 03:51:14 for GDCM by doxygen 1.8.4
SourceForge.net Logo