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
|
/*
Aeskulap ImagePool - DICOM abstraction library
Copyright (C) 2005 Alexander Pipelka
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Alexander Pipelka
*/
#ifndef IMAGEPOOL_NETCLIENT_H
#define IMAGEPOOL_NETCLIENT_H
#include "dcmtk/dcmdata/dcdatset.h"
#include "poolnetwork.h"
#include <iostream>
namespace ImagePool {
extern Network net;
template<class T>
class NetClient : public T {
public:
sigc::signal< void, DcmStack*, std::string > signal_server_result;
bool QueryServer(DcmDataset* query, const std::string& server, const std::string& local_aet, const char* syntax = NULL) {
ImagePool::Server* s = ServerList::find_server(server);
if(s == NULL) {
return false;
}
T::SetAcceptLossyImages(s->m_lossy);
T::Create(
s->m_aet,
s->m_hostname,
s->m_port,
local_aet,
syntax
);
bool r = T::Connect(&net).good();
if(r == true) {
std::cout << "T::SendObject()" << std::endl;
r = T::SendObject(query).good();
}
std::cout << "T::Drop()" << std::endl;
T::Drop();
std::cout << "T::Destroy()" << std::endl;
T::Destroy();
DcmStack* result = T::GetResultStack();
if(r && result != NULL && result->card() > 0) {
std::cout << "signal_server_result('" << server << "')" << std::endl;
signal_server_result(result, server);
}
return r;
}
bool QueryServerGroup(DcmDataset* query, const std::string& group, const std::string& local_aet, const char* syntax = NULL) {
Glib::RefPtr<ServerList> list = ServerList::get(group);
bool rc = false;
std::cout << "QueryServerGroup(" << group << ")" << std::endl;
for(ServerList::iterator i = list->begin(); i != list->end(); i++) {
rc |= QueryServer(query, i->first, local_aet, syntax);
}
return rc;
}
};
} // namespace ImagePool
#endif // IMAGEPOOL_NETCLIENT_H
|