summaryrefslogtreecommitdiffstats
path: root/objects/server-object.c
diff options
context:
space:
mode:
authorChristopher Davis <loafier@gmail.com>2006-08-12 22:16:53 +0000
committerChristopher Davis <loafier@gmail.com>2006-08-12 22:16:53 +0000
commit3a028090359e5d5d24ccbfc11d9b6ff5681aab4f (patch)
tree0cfb8ec1eb8a49366fc663bef00bf4dfb1f7c307 /objects/server-object.c
parentf13ea25509e932d426ebd69d90368fe9b1d4c1ab (diff)
downloadirssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.tar.gz
irssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.tar.xz
irssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.zip
directory structure change
git-svn-id: http://svn.irssi.org/repos/irssi-python@4312 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'objects/server-object.c')
-rw-r--r--objects/server-object.c807
1 files changed, 0 insertions, 807 deletions
diff --git a/objects/server-object.c b/objects/server-object.c
deleted file mode 100644
index 31415b8..0000000
--- a/objects/server-object.c
+++ /dev/null
@@ -1,807 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "factory.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-static void server_cleanup(SERVER_REC *server)
-{
- PyServer *pyserver = signal_get_user_data();
-
- if (server == pyserver->data)
- {
- if (pyserver->connect)
- ((PyConnect *)pyserver->connect)->data = NULL;
-
- if (pyserver->rawlog)
- ((PyRawlog *)pyserver->rawlog)->data = NULL;
-
- pyserver->data = NULL;
- pyserver->cleanup_installed = 0;
- signal_remove_data("server disconnected", server_cleanup, pyserver);
- }
-}
-
-static void PyServer_dealloc(PyServer *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("server disconnected", server_cleanup, self);
-
- Py_XDECREF(self->connect);
- Py_XDECREF(self->rawlog);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyServer_connect_time_doc,
- "Time when connect() to server finished"
-);
-static PyObject *PyServer_connect_time_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->connect_time);
-}
-
-PyDoc_STRVAR(PyServer_real_connect_time_doc,
- "Time when server sent 'connected' message"
-);
-static PyObject *PyServer_real_connect_time_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->real_connect_time);
-}
-
-PyDoc_STRVAR(PyServer_tag_doc,
- "Unique server tag"
-);
-static PyObject *PyServer_tag_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->tag);
-}
-
-PyDoc_STRVAR(PyServer_nick_doc,
- "Current nick"
-);
-static PyObject *PyServer_nick_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->nick);
-}
-
-PyDoc_STRVAR(PyServer_connected_doc,
- "Is connection finished? 1|0"
-);
-static PyObject *PyServer_connected_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->connected);
-}
-
-PyDoc_STRVAR(PyServer_connection_lost_doc,
- "Did we lose the connection (1) or was the connection just /DISCONNECTed (0)"
-);
-static PyObject *PyServer_connection_lost_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->connection_lost);
-}
-
-PyDoc_STRVAR(PyServer_rawlog_doc,
- "Rawlog object for the server"
-);
-static PyObject *PyServer_rawlog_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->rawlog);
-}
-
-PyDoc_STRVAR(PyServer_connect_doc,
- "Connect object for the server"
-);
-static PyObject *PyServer_connect_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->connect);
-}
-
-PyDoc_STRVAR(PyServer_version_doc,
- "Server version"
-);
-static PyObject *PyServer_version_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->version);
-}
-
-PyDoc_STRVAR(PyServer_last_invite_doc,
- "Last channel we were invited to"
-);
-static PyObject *PyServer_last_invite_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->last_invite);
-}
-
-PyDoc_STRVAR(PyServer_server_operator_doc,
- "Are we server operator (IRC op) 1|0"
-);
-static PyObject *PyServer_server_operator_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->server_operator);
-}
-
-PyDoc_STRVAR(PyServer_usermode_away_doc,
- "Are we marked as away? 1|0"
-);
-static PyObject *PyServer_usermode_away_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->usermode_away);
-}
-
-PyDoc_STRVAR(PyServer_away_reason_doc,
- "Away reason message"
-);
-static PyObject *PyServer_away_reason_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->away_reason);
-}
-
-PyDoc_STRVAR(PyServer_banned_doc,
- "Were we banned from this server? 1|0"
-);
-static PyObject *PyServer_banned_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->banned);
-}
-
-PyDoc_STRVAR(PyServer_lag_doc,
- "Current lag to server in milliseconds"
-);
-static PyObject *PyServer_lag_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->lag);
-}
-
-static PyGetSetDef PyServer_getseters[] = {
- {"connect_time", (getter)PyServer_connect_time_get, NULL,
- PyServer_connect_time_doc, NULL},
- {"real_connect_time", (getter)PyServer_real_connect_time_get, NULL,
- PyServer_real_connect_time_doc, NULL},
- {"tag", (getter)PyServer_tag_get, NULL,
- PyServer_tag_doc, NULL},
- {"nick", (getter)PyServer_nick_get, NULL,
- PyServer_nick_doc, NULL},
- {"connected", (getter)PyServer_connected_get, NULL,
- PyServer_connected_doc, NULL},
- {"connection_lost", (getter)PyServer_connection_lost_get, NULL,
- PyServer_connection_lost_doc, NULL},
- {"rawlog", (getter)PyServer_rawlog_get, NULL,
- PyServer_rawlog_doc, NULL},
- {"connect", (getter)PyServer_connect_get, NULL,
- PyServer_connect_doc, NULL},
- {"version", (getter)PyServer_version_get, NULL,
- PyServer_version_doc, NULL},
- {"last_invite", (getter)PyServer_last_invite_get, NULL,
- PyServer_last_invite_doc, NULL},
- {"server_operator", (getter)PyServer_server_operator_get, NULL,
- PyServer_server_operator_doc, NULL},
- {"usermode_away", (getter)PyServer_usermode_away_get, NULL,
- PyServer_usermode_away_doc, NULL},
- {"away_reason", (getter)PyServer_away_reason_get, NULL,
- PyServer_away_reason_doc, NULL},
- {"banned", (getter)PyServer_banned_get, NULL,
- PyServer_banned_doc, NULL},
- {"lag", (getter)PyServer_lag_get, NULL,
- PyServer_lag_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(print_doc,
- "prnt(channel, str, level) -> None\n"
- "\n"
- "Print to server\n"
-);
-static PyObject *PyServer_prnt(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"channel", "str", "level", NULL};
- char *str, *channel;
- int level = MSGLEVEL_CLIENTNOTICE;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss|i", kwlist, &channel, &str, &level))
- return NULL;
-
- printtext_string(self->data, channel, level, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(command_doc,
- "command(cmd) -> None\n"
- "\n"
- "Send command\n"
-);
-static PyObject *PyServer_command(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &cmd))
- return NULL;
-
- py_command(cmd, self->data, NULL);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(disconnect_doc,
- "disconnect() -> None\n"
- "\n"
- "Disconnect from server\n"
-);
-static PyObject *PyServer_disconnect(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- server_disconnect(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(isnickflag_doc,
- "isnickflag(flag) -> bool\n"
- "\n"
- "Returns True if flag is a nick mode flag (@, + or % in IRC)\n"
-);
-static PyObject *PyServer_isnickflag(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"flag", NULL};
- char flag;
- int ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "c", kwlist, &flag))
- return NULL;
-
- ret = self->data->isnickflag(self->data, flag);
-
- return PyBool_FromLong(ret);
-}
-
-PyDoc_STRVAR(ischannel_doc,
- "ischannel(data) -> bool\n"
- "\n"
- "Returns True if start of `data' seems to mean channel.\n"
-);
-static PyObject *PyServer_ischannel(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data", NULL};
- char *data;
- int ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &data))
- return NULL;
-
- ret = self->data->ischannel(self->data, data);
-
- return PyBool_FromLong(ret);
-}
-
-PyDoc_STRVAR(get_nick_flags_doc,
- "get_nick_flags() -> str\n"
- "\n"
- "Returns nick flag characters in order: op, voice, halfop (\"@+%\") in IRC\n"
-);
-static PyObject *PyServer_get_nick_flags(PyServer *self, PyObject *args)
-{
- char *ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- ret = (char *)self->data->get_nick_flags(self->data);
-
- return PyString_FromString(ret);
-}
-
-PyDoc_STRVAR(send_message_doc,
- "send_message(target, msg, target_type) -> None\n"
- "\n"
- "Sends a message to nick/channel. target_type 0 = channel, 1 = nick\n"
-);
-static PyObject *PyServer_send_message(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"target", "msg", "target_type", NULL};
- char *target, *msg;
- int target_type;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssi", kwlist, &target, &msg, &target_type))
- return NULL;
-
- self->data->send_message(self->data, target, msg, target_type);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(channels_join_doc,
- "channels_join(channels, automatic=False) -> None\n"
- "\n"
- "Join to channels in server. `channels' may also contain keys for\n"
- "channels just like with /JOIN command. `automatic' specifies if this\n"
- "channel was joined 'automatically' or if it was joined because join\n"
- "was requested by user. If channel join is 'automatic', irssi doesn't\n"
- "jump to the window where the channel was joined.\n"
-);
-static PyObject *PyServer_channels_join(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"channels", "automatic", NULL};
- char *channels;
- int automatic = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &channels, &automatic))
- return NULL;
-
- self->data->channels_join(self->data, channels, automatic);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_item_find_doc,
- "window_item_find(name) -> WindowItem object or None\n"
- "\n"
- "Find window item that matches best to given arguments\n"
-);
-static PyObject *PyServer_window_item_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- return py_irssi_chat_new(window_item_find(self->data, name), 1);
-}
-
-PyDoc_STRVAR(PyServer_window_find_item_doc,
- "window_find_item(name) -> Window object or None\n"
- "\n"
- "Find window which contains window item with specified name/server\n"
-);
-static PyObject *PyServer_window_find_item(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- win = window_find_item(self->data, name);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_find_level_doc,
- "window_find_level(level) -> Window object or None\n"
- "\n"
- "Find window with level\n"
-);
-static PyObject *PyServer_window_find_level(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"level", NULL};
- int level = 0;
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
- &level))
- return NULL;
-
- win = window_find_level(self->data, level);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_find_closest_doc,
- "window_find_closest(name, level) -> Window object or None\n"
- "\n"
- "Find window that matches best to given arguments. `name' can be either\n"
- "window name or name of one of the window items.\n"
-);
-static PyObject *PyServer_window_find_closest(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", "level", NULL};
- char *name = "";
- int level = 0;
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "si", kwlist,
- &name, &level))
- return NULL;
-
- win = window_find_closest(self->data, name, level);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_channels_doc,
- "channels() -> list of Channel objects\n"
- "\n"
- "Return list of channels for server\n"
-);
-static PyObject *PyServer_channels(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_chatlist_new(self->data->channels, 1);
-}
-
-PyDoc_STRVAR(PyServer_channel_find_doc,
- "channel_find(name) -> Channel object or None\n"
- "\n"
- "Find channel from this server\n"
-);
-static PyObject *PyServer_channel_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- return py_irssi_chat_new(channel_find(self->data, name), 1);
-}
-
-PyDoc_STRVAR(PyServer_nicks_get_same_doc,
- "nicks_get_same(nick)\n"
- "\n"
- "Return all nick objects in all channels in server. List is in format:\n"
- "[(Channel, Nick), (Channel, Nick), ...]\n"
-);
-static PyObject *PyServer_nicks_get_same(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
- GSList *list, *node;
- PyObject *pylist = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- pylist = PyList_New(0);
- if (!pylist)
- return NULL;
-
- list = nicklist_get_same(self->data, nick);
- for (node = list; node != NULL; node = node->next->next)
- {
- int ret;
- PyObject *tup;
-
- tup = Py_BuildValue("(NN)",
- py_irssi_chat_new(node->data, 1),
- py_irssi_chat_new(node->next->data, 1));
- if (!tup)
- {
- Py_XDECREF(pylist);
- return NULL;
- }
-
- ret = PyList_Append(pylist, tup);
- Py_DECREF(tup);
- if (ret != 0)
- {
- Py_XDECREF(pylist);
- return NULL;
- }
- }
-
- return pylist;
-}
-
-PyDoc_STRVAR(PyServer_queries_doc,
- "queries() -> list of Query objects\n"
- "\n"
- "Return a list of queries for server.\n"
-);
-static PyObject *PyServer_queries(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_chatlist_new(self->data->queries, 1);
-}
-
-PyDoc_STRVAR(PyServer_query_find_doc,
- "query_find(nick) -> Query object or None\n"
- "\n"
- "Find a query on this server.\n"
-);
-static PyObject *PyServer_query_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- return py_irssi_chat_new(query_find(self->data, nick), 1);
-}
-
-PyDoc_STRVAR(PyServer_mask_match_doc,
- "mask_match(mask, nick, user, host) -> bool\n"
- "\n"
- "Return true if mask matches nick!user@host\n"
-);
-static PyObject *PyServer_mask_match(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"mask", "nick", "user", "host", NULL};
- char *mask = "";
- char *nick = "";
- char *user = "";
- char *host = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssss", kwlist,
- &mask, &nick, &user, &host))
- return NULL;
-
- return PyBool_FromLong(mask_match(self->data, mask, nick, user, host));
-}
-
-PyDoc_STRVAR(PyServer_mask_match_address_doc,
- "mask_match_address(mask, nick, address) -> bool\n"
- "\n"
- "Return True if mask matches nick!address\n"
-);
-static PyObject *PyServer_mask_match_address(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"mask", "nick", "address", NULL};
- char *mask = "";
- char *nick = "";
- char *address = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &mask, &nick, &address))
- return NULL;
-
- return PyBool_FromLong(mask_match_address(self->data, mask, nick, address));
-}
-
-PyDoc_STRVAR(PyServer_masks_match_doc,
- "masks_match(masks, nick, address) -> bool\n"
- "\n"
- "Return True if any mask in the masks (string separated by spaces)\n"
- "matches nick!address\n"
-);
-static PyObject *PyServer_masks_match(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"masks", "nick", "address", NULL};
- char *masks = "";
- char *nick = "";
- char *address = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &masks, &nick, &address))
- return NULL;
-
- return PyBool_FromLong(masks_match(self->data, masks, nick, address));
-}
-
-PyDoc_STRVAR(PyServer_ignore_check_doc,
- "ignore_check(nick, host, channel, text, level) -> bool\n"
- "\n"
- "Return True if ignore matches\n"
-);
-static PyObject *PyServer_ignore_check(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", "host", "channel", "text", "level", NULL};
- char *nick = "";
- char *host = "";
- char *channel = "";
- char *text = "";
- int level = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssssi", kwlist,
- &nick, &host, &channel, &text, &level))
- return NULL;
-
- return PyBool_FromLong(ignore_check(self->data,
- nick, host, channel, text, level));
-}
-
-/* Methods for object */
-static PyMethodDef PyServer_methods[] = {
- {"prnt", (PyCFunction)PyServer_prnt, METH_VARARGS | METH_KEYWORDS,
- print_doc},
- {"command", (PyCFunction)PyServer_command, METH_VARARGS | METH_KEYWORDS,
- command_doc},
- {"disconnect", (PyCFunction)PyServer_disconnect, METH_NOARGS,
- disconnect_doc},
- {"isnickflag", (PyCFunction)PyServer_isnickflag, METH_VARARGS | METH_KEYWORDS,
- isnickflag_doc},
- {"ischannel", (PyCFunction)PyServer_ischannel, METH_VARARGS | METH_KEYWORDS,
- ischannel_doc},
- {"get_nick_flags", (PyCFunction)PyServer_get_nick_flags, METH_NOARGS,
- get_nick_flags_doc},
- {"send_message", (PyCFunction)PyServer_send_message, METH_VARARGS | METH_KEYWORDS,
- send_message_doc},
- {"channels_join", (PyCFunction)PyServer_channels_join, METH_VARARGS | METH_KEYWORDS,
- channels_join_doc},
- {"window_item_find", (PyCFunction)PyServer_window_item_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_item_find_doc},
- {"window_find_item", (PyCFunction)PyServer_window_find_item, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_item_doc},
- {"window_find_level", (PyCFunction)PyServer_window_find_level, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_level_doc},
- {"window_find_closest", (PyCFunction)PyServer_window_find_closest, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_closest_doc},
- {"channels", (PyCFunction)PyServer_channels, METH_NOARGS,
- PyServer_channels_doc},
- {"channel_find", (PyCFunction)PyServer_channel_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_channel_find_doc},
- {"nicks_get_same", (PyCFunction)PyServer_nicks_get_same, METH_VARARGS | METH_KEYWORDS,
- PyServer_nicks_get_same_doc},
- {"queries", (PyCFunction)PyServer_queries, METH_NOARGS,
- PyServer_queries_doc},
- {"query_find", (PyCFunction)PyServer_query_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_query_find_doc},
- {"mask_match", (PyCFunction)PyServer_mask_match, METH_VARARGS | METH_KEYWORDS,
- PyServer_mask_match_doc},
- {"mask_match_address", (PyCFunction)PyServer_mask_match_address, METH_VARARGS | METH_KEYWORDS,
- PyServer_mask_match_address_doc},
- {"masks_match", (PyCFunction)PyServer_masks_match, METH_VARARGS | METH_KEYWORDS,
- PyServer_masks_match_doc},
- {"ignore_check", (PyCFunction)PyServer_ignore_check, METH_VARARGS | METH_KEYWORDS,
- PyServer_ignore_check_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyServerType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Server", /*tp_name*/
- sizeof(PyServer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyServer_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*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
- "PyServer objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyServer_methods, /* tp_methods */
- 0, /* tp_members */
- PyServer_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* server factory function
- connect arg should point to a wrapped SERVER_CONNECT */
-PyObject *pyserver_sub_new(void *server, PyTypeObject *subclass)
-{
- static const char *SERVER_TYPE = "SERVER";
- SERVER_REC *srec = server;
- PyServer *pyserver = NULL;
- PyObject *rawlog = NULL;
- PyObject *connect = NULL;
-
- g_return_val_if_fail(server != NULL, NULL);
-
- connect = py_irssi_chat_new(srec->connrec, 0);
- if (!connect)
- return NULL;
-
- /* FIXME */
- /*
- if (srec->rawlog)
- {
- rawlog = pyrawlog_new(srec->rawlog);
- if (!rawlog)
- return NULL;
- }
- */
-
- pyserver = py_instp(PyServer, subclass);
- if (!pyserver)
- return NULL;
-
- pyserver->base_name = SERVER_TYPE;
- pyserver->data = server;
- signal_add_last_data("server disconnected", server_cleanup, pyserver);
- pyserver->cleanup_installed = 1;
- pyserver->rawlog = rawlog;
- pyserver->connect = connect;
-
- return (PyObject *)pyserver;
-}
-
-PyObject *pyserver_new(void *server)
-{
- return pyserver_sub_new(server, &PyServerType);
-}
-
-int server_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyServerType) < 0)
- return 0;
-
- Py_INCREF(&PyServerType);
- PyModule_AddObject(py_module, "Server", (PyObject *)&PyServerType);
-
- return 1;
-}