summaryrefslogtreecommitdiffstats
path: root/objects/dcc-object.c
diff options
context:
space:
mode:
authorChristopher Davis <loafier@gmail.com>2006-06-21 00:22:03 +0000
committerChristopher Davis <loafier@gmail.com>2006-06-21 00:22:03 +0000
commit7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7 (patch)
treecc0ceff989c10739bcb18ae0743579bfb5074c3a /objects/dcc-object.c
parentbb48c914c6239ed1dbcb29eb62d33d3ab91e7215 (diff)
downloadirssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.tar.gz
irssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.tar.xz
irssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.zip
Added a lot of object wrappers. Most are untested.
Will finish up the rest of the object wrappers perhaps tonight or tomorrow. Signal handling will need to be addressed ASAP. There are quite a lot of other global module functions remaining to be wraped, as well. git-svn-id: http://svn.irssi.org/repos/irssi-python@4286 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'objects/dcc-object.c')
-rw-r--r--objects/dcc-object.c112
1 files changed, 63 insertions, 49 deletions
diff --git a/objects/dcc-object.c b/objects/dcc-object.c
index 772c011..62b5915 100644
--- a/objects/dcc-object.c
+++ b/objects/dcc-object.c
@@ -5,6 +5,7 @@
#include "factory.h"
#include "pycore.h"
+
/* monitor "dcc destroyed signal" */
static void dcc_cleanup(DCC_REC *dcc)
{
@@ -35,12 +36,11 @@ PyDoc_STRVAR(PyDcc_orig_type_doc,
);
static PyObject *PyDcc_orig_type_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
const char *type;
- RET_NULL_IF_INVALID(data);
+ RET_NULL_IF_INVALID(self->data);
- type = module_find_id_str("DCC", data->orig_type);
+ type = module_find_id_str("DCC", DCC(self->data)->orig_type);
RET_AS_STRING_OR_NONE(type);
}
@@ -49,10 +49,8 @@ PyDoc_STRVAR(PyDcc_created_doc,
);
static PyObject *PyDcc_created_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- return PyLong_FromUnsignedLong(data->created);
+ RET_NULL_IF_INVALID(self->data);
+ return PyLong_FromUnsignedLong(DCC(self->data)->created);
}
PyDoc_STRVAR(PyDcc_server_doc,
@@ -60,9 +58,7 @@ PyDoc_STRVAR(PyDcc_server_doc,
);
static PyObject *PyDcc_server_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
+ RET_NULL_IF_INVALID(self->data);
RET_AS_OBJ_OR_NONE(self->server);
}
@@ -71,10 +67,8 @@ PyDoc_STRVAR(PyDcc_servertag_doc,
);
static PyObject *PyDcc_servertag_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->servertag);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->servertag);
}
PyDoc_STRVAR(PyDcc_mynick_doc,
@@ -82,10 +76,8 @@ PyDoc_STRVAR(PyDcc_mynick_doc,
);
static PyObject *PyDcc_mynick_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->mynick);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->mynick);
}
PyDoc_STRVAR(PyDcc_nick_doc,
@@ -93,10 +85,8 @@ PyDoc_STRVAR(PyDcc_nick_doc,
);
static PyObject *PyDcc_nick_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->nick);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->nick);
}
PyDoc_STRVAR(PyDcc_chat_doc,
@@ -104,9 +94,7 @@ PyDoc_STRVAR(PyDcc_chat_doc,
);
static PyObject *PyDcc_chat_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
+ RET_NULL_IF_INVALID(self->data);
RET_AS_OBJ_OR_NONE(self->chat);
}
@@ -115,10 +103,8 @@ PyDoc_STRVAR(PyDcc_target_doc,
);
static PyObject *PyDcc_target_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->target);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->target);
}
PyDoc_STRVAR(PyDcc_arg_doc,
@@ -126,10 +112,8 @@ PyDoc_STRVAR(PyDcc_arg_doc,
);
static PyObject *PyDcc_arg_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->arg);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->arg);
}
PyDoc_STRVAR(PyDcc_addr_doc,
@@ -137,10 +121,8 @@ PyDoc_STRVAR(PyDcc_addr_doc,
);
static PyObject *PyDcc_addr_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- RET_AS_STRING_OR_NONE(data->addrstr);
+ RET_NULL_IF_INVALID(self->data);
+ RET_AS_STRING_OR_NONE(DCC(self->data)->addrstr);
}
PyDoc_STRVAR(PyDcc_port_doc,
@@ -148,10 +130,8 @@ PyDoc_STRVAR(PyDcc_port_doc,
);
static PyObject *PyDcc_port_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- return PyInt_FromLong(data->port);
+ RET_NULL_IF_INVALID(self->data);
+ return PyInt_FromLong(DCC(self->data)->port);
}
PyDoc_STRVAR(PyDcc_starttime_doc,
@@ -159,10 +139,8 @@ PyDoc_STRVAR(PyDcc_starttime_doc,
);
static PyObject *PyDcc_starttime_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- return PyLong_FromUnsignedLong(data->starttime);
+ RET_NULL_IF_INVALID(self->data);
+ return PyLong_FromUnsignedLong(DCC(self->data)->starttime);
}
PyDoc_STRVAR(PyDcc_transfd_doc,
@@ -170,10 +148,8 @@ PyDoc_STRVAR(PyDcc_transfd_doc,
);
static PyObject *PyDcc_transfd_get(PyDcc *self, void *closure)
{
- DCC_REC *data = self->data;
-
- RET_NULL_IF_INVALID(data);
- return PyLong_FromUnsignedLong(data->transfd);
+ RET_NULL_IF_INVALID(self->data);
+ return PyLong_FromUnsignedLong(DCC(self->data)->transfd);
}
/* specialized getters/setters */
@@ -220,10 +196,48 @@ static PyObject *PyDcc_destroy(PyDcc *self, PyObject *args)
Py_RETURN_NONE;
}
+PyDoc_STRVAR(PyDcc_reject_doc,
+ "?"
+);
+static PyObject *PyDcc_reject(PyDcc *self, PyObject *args, PyObject *kwds)
+{
+ static char *kwlist[] = {"server", NULL};
+ PyObject *server = NULL;
+
+ RET_NULL_IF_INVALID(self->data);
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
+ &server))
+ return NULL;
+
+ if (!pyirc_server_check(server))
+ return PyErr_Format(PyExc_TypeError, "arg must be IRC server object");
+
+ dcc_reject(self->data, ((PyIrcServer*)server)->data);
+
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(PyDcc_close_doc,
+ "Close and destroy DCC connection"
+);
+static PyObject *PyDcc_close(PyDcc *self, PyObject *args)
+{
+ RET_NULL_IF_INVALID(self->data);
+
+ dcc_close(self->data);
+
+ Py_RETURN_NONE;
+}
+
/* Methods for object */
static PyMethodDef PyDcc_methods[] = {
{"destroy", (PyCFunction)PyDcc_destroy, METH_NOARGS,
PyDcc_destroy_doc},
+ {"reject", (PyCFunction)PyDcc_reject, METH_VARARGS | METH_KEYWORDS,
+ PyDcc_reject_doc},
+ {"close", (PyCFunction)PyDcc_close, METH_NOARGS,
+ PyDcc_close_doc},
{NULL} /* Sentinel */
};