-
Notifications
You must be signed in to change notification settings - Fork 149
/
XRootDStatusType.hh
139 lines (118 loc) · 4.94 KB
/
XRootDStatusType.hh
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
* XRootDStatusType.hh
*
* Created on: Feb 20, 2013
* Author: root
*/
#ifndef XROOTDSTATUSTYPE_HH_
#define XROOTDSTATUSTYPE_HH_
#include <Python.h>
#include "structmember.h"
#include "XrdCl/XrdClXRootDResponses.hh"
namespace XrdClBind
{
typedef struct {
PyObject_HEAD
/* Type-specific fields */
XrdCl::XRootDStatus *status;
} XRootDStatus;
static void
XRootDStatus_dealloc(XRootDStatus* self)
{
self->ob_type->tp_free((PyObject*) self);
}
static int
XRootDStatus_init(XRootDStatus *self, PyObject *args, PyObject *kwds) {
static char *kwlist[] = {"status", "code", "errNo", "message", NULL};
uint16_t status, code;
uint32_t errNo;
const char *message;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "iiis", kwlist,
&status, &code, &errNo, &message))
return -1;
self->status = new XrdCl::XRootDStatus(status, code, errNo, std::string(message));
return 0;
}
static PyObject *
XRootDStatus_str(XRootDStatus *status)
{
return PyString_FromString(status->status->ToStr().c_str());
}
static PyObject*
GetErrorMessage(XRootDStatus* self)
{
return Py_BuildValue("s", self->status->GetErrorMessage());
}
static PyObject *
XRootDStatus_GetStatus(XRootDStatus *self, void *closure)
{
return Py_BuildValue("i", self->status->status);
}
static PyObject *
XRootDStatus_GetCode(XRootDStatus *self, void *closure)
{
return Py_BuildValue("i", self->status->code);
}
static PyObject *
XRootDStatus_GetErrNo(XRootDStatus *self, void *closure)
{
return Py_BuildValue("i", self->status->errNo);
}
static PyGetSetDef XRootDStatusGetSet[] = {
{"status", (getter) XRootDStatus_GetStatus, NULL,
"Status of the execution", NULL},
{"code", (getter) XRootDStatus_GetCode, NULL,
"Error type, or additional hints on what to do", NULL},
{"errNo", (getter) XRootDStatus_GetErrNo, NULL,
"Errno, if any", NULL},
{NULL} /* Sentinel */
};
static PyMemberDef XRootDStatusMembers[] = {
{NULL} /* Sentinel */
};
static PyMethodDef XRootDStatusMethods[] = {
{"GetErrorMessage", (PyCFunction) GetErrorMessage, METH_NOARGS,
"Return the error message"},
{NULL} /* Sentinel */
};
static PyTypeObject XRootDStatusType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
"client.XRootDStatus", /* tp_name */
sizeof(XRootDStatus), /* tp_basicsize */
0, /* tp_itemsize */
(destructor) XRootDStatus_dealloc, /* tp_dealloc */
0, /* tp_print */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_compare */
0, /* tp_repr */
0, /* tp_as_number */
0, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
(reprfunc) XRootDStatus_str, /* tp_str */
0, /* tp_getattro */
0, /* tp_setattro */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
"XRootDStatus object", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
XRootDStatusMethods, /* tp_methods */
XRootDStatusMembers, /* tp_members */
XRootDStatusGetSet, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc) XRootDStatus_init, /* tp_init */
};
}
#endif /* XROOTDSTATUSTYPE_HH_ */