ARC SDK
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
libs
data-staging
DataDeliveryComm.h
1
#ifndef DATA_DELIVERY_COMM_H_
2
#define DATA_DELIVERY_COMM_H_
3
4
#include "DTR.h"
5
6
namespace
DataStaging {
7
8
class
DataDeliveryCommHandler;
9
11
27
class
DataDeliveryComm
{
28
29
friend
class
DataDeliveryCommHandler
;
30
31
public
:
33
enum
CommStatusType
{
34
CommInit
,
35
CommNoError
,
36
CommTimeout
,
37
CommClosed
,
38
CommExited
,
39
CommFailed
40
41
};
42
#pragma pack(4)
43
44
45
struct
Status
{
46
CommStatusType
commstatus
;
47
time_t
timestamp
;
48
DTRStatus::DTRStatusType
status
;
49
DTRErrorStatus::DTRErrorStatusType
error
;
50
DTRErrorStatus::DTRErrorLocation
error_location
;
51
char
error_desc
[1024];
52
unsigned
int
streams
;
53
unsigned
long
long
int
transferred
;
54
unsigned
long
long
int
offset
;
55
unsigned
long
long
int
size
;
56
unsigned
int
speed
;
57
char
checksum
[128];
58
};
59
#pragma pack()
60
61
protected
:
62
64
Status
status_
;
66
Status
status_buf_
;
68
unsigned
int
status_pos_
;
70
Glib::Mutex
lock_
;
72
DataDeliveryCommHandler
*
handler_
;
74
std::string
dtr_id
;
76
TransferParameters
transfer_params
;
78
Arc::Time
start_
;
80
DTRLogger
logger_
;
81
83
88
virtual
void
PullStatus
() = 0;
89
91
95
DataDeliveryComm
(
DTR_ptr
dtr,
const
TransferParameters
& params);
96
97
public
:
99
static
DataDeliveryComm
*
CreateInstance
(
DTR_ptr
dtr,
const
TransferParameters
& params);
100
102
virtual
~DataDeliveryComm
() {};
103
105
Status
GetStatus
()
const
;
106
108
114
static
bool
CheckComm
(
DTR_ptr
dtr, std::vector<std::string>& allowed_dirs);
115
117
std::string
GetError
()
const
{
return
status_
.
error_desc
; };
118
120
virtual
operator
bool()
const
= 0;
122
virtual
bool
operator!
()
const
= 0;
123
};
124
126
130
class
DataDeliveryCommHandler
{
131
132
private
:
133
Glib::Mutex lock_;
134
static
void
func(
void
* arg);
135
std::list<DataDeliveryComm*> items_;
136
static
DataDeliveryCommHandler
* comm_handler;
137
139
DataDeliveryCommHandler
();
140
DataDeliveryCommHandler
(
const
DataDeliveryCommHandler
&);
141
DataDeliveryCommHandler
& operator=(
const
DataDeliveryCommHandler
&);
142
143
public
:
144
~
DataDeliveryCommHandler
() {};
146
void
Add
(
DataDeliveryComm
* item);
148
void
Remove
(
DataDeliveryComm
* item);
150
static
DataDeliveryCommHandler
*
getInstance
();
151
};
152
153
}
// namespace DataStaging
154
155
#endif // DATA_DELIVERY_COMM_H_
Generated on Mon Mar 4 2013 15:45:43 for ARC SDK by
1.8.3.1