static CHANNEL_SEND_HEAD(impl_channel_send)
{
	STACKLESS_GETARG();
	PyThreadState *ts = PyThreadState_GET();

	if(ts->st.main == NULL) return PyChannel_Send_M(self, arg);
	return generic_channel_action(self, arg, 1, stackless);
}
static PyObject *
impl_channel_receive(PyChannelObject *self)
{
    STACKLESS_GETARG();
    PyThreadState *ts = PyThreadState_GET();

    if (ts->st.main == NULL) return PyChannel_Receive_M(self);
    return generic_channel_action(self, Py_None, -1, stackless);
}
static PyObject *
impl_channel_send(PyChannelObject *self, PyObject *arg)
{
    STACKLESS_GETARG();
    PyThreadState *ts = PyThreadState_GET();

    if(ts->st.main == NULL) return PyChannel_Send_M(self, arg);
    return generic_channel_action(self, arg, 1, stackless);
}
Exemple #4
0
static CHANNEL_SEND_EXCEPTION_HEAD(impl_channel_send_exception)
{
	STACKLESS_GETARG();
	PyThreadState *ts = PyThreadState_GET();
	PyObject *bomb, *ret = NULL;

	assert(PyChannel_Check(self));
	if (ts->st.main == NULL)
		return PyChannel_SendException_M(self, klass, args);

	bomb = slp_make_bomb(klass, args, "channel.send_exception");
	if (bomb != NULL) {
		ret = generic_channel_action(self, bomb, 1, stackless);
		Py_DECREF(bomb);
	}
	return ret;
}
static PyObject *
impl_channel_send_throw(PyChannelObject *self, PyObject *exc, PyObject *val, PyObject *tb)
{
    STACKLESS_GETARG();
    PyThreadState *ts = PyThreadState_GET();
    PyObject *bomb, *ret = NULL;

    assert(PyChannel_Check(self));
    if (ts->st.main == NULL)
        return PyChannel_SendThrow_M(self, exc, val, tb);

    bomb = slp_exc_to_bomb(exc, val, tb);
    if (bomb != NULL) {
        ret = generic_channel_action(self, bomb, 1, stackless);
        Py_DECREF(bomb);
    }
    return ret;
}
static PyObject *
channel_send(PyObject *self, PyObject *arg)
{
    STACKLESS_GETARG();
    return generic_channel_action((PyChannelObject*)self, arg, 1, stackless);
}