/
gw_tm.h
122 lines (79 loc) · 4.22 KB
/
gw_tm.h
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
114
115
116
117
118
119
120
121
122
/* -------------------------------------------------------------------------- */
/* Copyright 2002-2006 GridWay Team, Distributed Systems Architecture */
/* Group, Universidad Complutense de Madrid */
/* */
/* 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 */
/* */
/* 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. */
/* -------------------------------------------------------------------------- */
#ifndef _GW_TM_H
#define _GW_TM_H
#include <pthread.h>
#include "gw_action.h"
#include "gw_job_pool.h"
#include "gw_tm_mad.h"
#include "gw_conf.h"
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
#define GW_TM_MAX_ACTION 20
#define GW_TM_MAX_INFO 65536
#define GW_TM_MAX_RESULT 10
#define GW_TM_MAX_STRING 65536
#define GW_TM_MAX_JOB_ID 5
#define GW_TM_MAX_XFR_ID 5
#define GW_TM_TIMER_PERIOD 5
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
typedef struct gw_tm_s {
pthread_t listener_thread;
pthread_t thread_id;
pthread_mutex_t mutex;
int um_tm_pipe_r;
int um_tm_pipe_w;
gw_am_t am;
gw_am_t *dm_am;
} gw_tm_t;
/* -------------------------------------------------------------------------- */
extern gw_tm_t gw_tm;
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
gw_tm_t* gw_tm_init();
void gw_tm_finalize();
void gw_tm_set_dm_am(gw_am_t *dm_am);
/* -------------------------------------------------------------------------- */
void gw_tm_prolog(void *_job_id);
void gw_tm_prolog_stage_in(gw_job_t * job);
void gw_tm_prolog_cp_cb(gw_job_t * job, int cp_xfr_id, gw_boolean_t failure);
int gw_tm_prolog_build_urls(gw_job_t * job,
char * src,
char * dst,
char ** src_url,
char ** dst_url);
/* -------------------------------------------------------------------------- */
void gw_tm_epilog(void *_job_id);
void gw_tm_epilog_stage_out(gw_job_t * job);
void gw_tm_epilog_cp_cb(gw_job_t * job, int cp_xfr_id, gw_boolean_t failure);
int gw_tm_epilog_build_urls(gw_job_t * job,
char * src,
char * dst,
char ** src_url,
char ** dst_url);
/* -------------------------------------------------------------------------- */
void gw_tm_timer(void *_job_id);
/* -------------------------------------------------------------------------- */
void gw_tm_checkpoint_cp(gw_job_t * job);
void gw_tm_checkpoint_cp_cb(gw_job_t * job, int cp_xfr_id, gw_boolean_t failure);
/* -------------------------------------------------------------------------- */
void gw_tm_start();
void gw_tm_listener(void *arg);
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
#endif