int Client_init(PyClient *self, PyObject *args, PyObject *kwargs)
{
  /* Args:
  def __init__(self, address, protocol = "text", codec = "default"):
  */

  self->client = NULL;
  self->host = NULL;
  self->maxSize = MAX_ITEM_SIZE;


  char *address;
  PRINTMARK();

  static char *kwlist[] = {"address", "max_item_size", NULL};

  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i", kwlist, &address, &self->maxSize))
  {
    PRINTMARK();
    return -1;
  }

  PRINTMARK();
  char *offset = strchr (address, ':');

  if (offset == NULL)
  {
    PyErr_Format(umemcache_MemcachedError, "Invalid argument for address");
    return -1;
  }

  char *port = address + (offset - address) + 1;


  self->host = PyString_FromStringAndSize(address, (offset - address));
  self->port = atoi(port);
  Py_INCREF(self->host);
  PRINTMARK();
  self->sock = (PyObject *) API_createSocket(AF_INET, SOCK_STREAM, 0);
  PRINTMARK();

  self->desc.prv = self;
  self->desc.connect = API_connect;
  self->desc.destroy = API_destroy;
  self->desc.recv = API_recv;
  self->desc.send = API_send;
  PRINTMARK();
  self->client = new Client(&self->desc);
  PRINTMARK();

  return 0;
}
int Client_init(PyClient *self, PyObject *args)
{
    /* Args:
     def __init__(self, address, protocol = "text", codec = "default"):
    */

    self->client = NULL;
    self->host = NULL;


    char *address;
    PRINTMARK();

    if (!PyArg_ParseTuple (args, "s", &address))
    {
        PRINTMARK();
        return -1;
    }

    PRINTMARK();
    char *offset = strchr (address, ':');

    if (offset == NULL)
    {
        PyErr_Format(PyExc_RuntimeError, "Invalid argument for address");
        return -1;
    }

    char *port = address + (offset - address) + 1;


    self->host = PyString_FromStringAndSize(address, (offset - address));
    self->port = atoi(port);
    Py_INCREF(self->host);
    PRINTMARK();
    self->sock = (PyObject *) API_createSocket(AF_INET, SOCK_STREAM, 0);
    PRINTMARK();
    self->sockfd = API_getSocketFD(self->sock);

    self->desc.prv = self;
    self->desc.connect = API_connect;
    self->desc.destroy = API_destroy;
    self->desc.recv = API_recv;
    self->desc.send = API_send;
    PRINTMARK();
    self->client = new Client(&self->desc);
    PRINTMARK();

    return 0;
}