The SocketClient is, I believe, being passed to the callback via the GObject* sourceObject parameter. Passing it via the userData would, I believe, be duplication.