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
|
/*=========================================================================
*
* 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.
*
*=========================================================================*/
//this class contains all the information about a particular connection
//as established by the user. That is, it's:
// User Information
// Calling AE Title
// Called AE Title
// IP address/computer name
// IP Port
//A connection must be established with this information, that's subsequently
//placed into various primitives for actual communication.
#include "gdcmULConnectionInfo.h"
#include "gdcmAAssociateRQPDU.h"
#include <socket++/sockinet.h>//for setting up the local socket
#if defined(_WIN32)
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif
namespace gdcm
{
namespace network
{
ULConnectionInfo::ULConnectionInfo()
{
}
//it is possible to misinitialize this object, so
//have it return false if something breaks (ie, given AEs are bigger than 16 characters,
//no name or IP address).
bool ULConnectionInfo::Initialize(UserInformation const & inUserInformation,
const char *inCalledAETitle, const char *inCallingAETitle,
unsigned long inCalledIPAddress, int inCalledIPPort,
std::string inCalledComputerName)
{
if (inCalledIPAddress == 0 && inCalledComputerName.empty()){
return false;
}
assert( inCalledAETitle );
assert( inCallingAETitle );
assert( AAssociateRQPDU::IsAETitleValid( inCalledAETitle ) );
assert( AAssociateRQPDU::IsAETitleValid( inCallingAETitle ) );
const size_t lcalled = strlen( inCalledAETitle );
const size_t lcalling = strlen( inCallingAETitle );
mCalledAETitle = std::string(inCalledAETitle, lcalled > 16 ? 16 : lcalled );
mCallingAETitle = std::string(inCallingAETitle, lcalling > 16 ? 16 : lcalling );
mCalledComputerName = inCalledComputerName;
mCalledIPPort = inCalledIPPort;
mCalledIPAddress = inCalledIPAddress;
//test to see if the given computer name is actually an IP address
if (mCalledIPAddress == 0 && !mCalledComputerName.empty()){
mCalledIPAddress = inet_addr(mCalledComputerName.c_str());
// if (mCalledIPAddress != 0)
// mCalledComputerName = "";
}
//mUserInformation = inUserInformation;
(void)inUserInformation;
return true;
}
//UserInformation ULConnectionInfo::GetUserInformation() const{
// return mUserInformation;
//}
const char* ULConnectionInfo::GetCalledAETitle() const{
return mCalledAETitle.c_str();
}
const char* ULConnectionInfo::GetCallingAETitle() const{
return mCallingAETitle.c_str();
}
unsigned long ULConnectionInfo::GetCalledIPAddress() const{
return mCalledIPAddress;
}
int ULConnectionInfo::GetCalledIPPort() const{
return mCalledIPPort;
}
std::string ULConnectionInfo::GetCalledComputerName() const{
return mCalledComputerName;
}
void ULConnectionInfo::SetMaxPDULength(unsigned long inMaxPDULength){
mMaxPDULength = inMaxPDULength;
}
unsigned long ULConnectionInfo::GetMaxPDULength() const{
return mMaxPDULength;
}
} // end namespace network
} // end namespace gdcm
|