ARC SDK
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
svn-area
arc1-clean
src
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
TransferParameters
transfer_params
;
76
Arc::Time
start_
;
78
DTRLogger
logger_
;
79
81
86
virtual
void
PullStatus
() = 0;
87
89
93
DataDeliveryComm
(
DTR_ptr
dtr,
const
TransferParameters
& params);
94
95
public
:
97
static
DataDeliveryComm
*
CreateInstance
(
DTR_ptr
dtr,
const
TransferParameters
& params);
98
100
virtual
~DataDeliveryComm
() {};
101
103
Status
GetStatus
()
const
;
104
106
112
static
bool
CheckComm
(
DTR_ptr
dtr, std::vector<std::string>& allowed_dirs);
113
115
std::string
GetError
()
const
{
return
status_
.
error_desc
; };
116
118
virtual
operator
bool()
const
= 0;
120
virtual
bool
operator!
()
const
= 0;
121
};
122
124
128
class
DataDeliveryCommHandler
{
129
130
private
:
131
Glib::Mutex lock_;
132
static
void
func(
void
* arg);
133
std::list<DataDeliveryComm*> items_;
134
static
DataDeliveryCommHandler
* comm_handler;
135
137
DataDeliveryCommHandler
();
138
DataDeliveryCommHandler
(
const
DataDeliveryCommHandler
&);
139
DataDeliveryCommHandler
& operator=(
const
DataDeliveryCommHandler
&);
140
141
public
:
142
~
DataDeliveryCommHandler
() {};
144
void
Add
(
DataDeliveryComm
* item);
146
void
Remove
(
DataDeliveryComm
* item);
148
static
DataDeliveryCommHandler
*
getInstance
();
149
};
150
151
}
// namespace DataStaging
152
153
#endif // DATA_DELIVERY_COMM_H_
Generated on Fri Jul 5 2013 14:37:45 for ARC SDK by
1.8.3.1-20130209