def __call__(self, context):
        client = ImposterClient(context)

        # The following line will to the equivalent of the rest of this method,
        # using sensible default values.
        #
        # sess_id = client.do_full_handshake()
        handshake_request = client.handshake()
        client.send(handshake_request)
        response_raw = client.receive()
        response = client.unpack(response_raw, handshake_request)
        print response

        protocol_request = client.kXR_protocol()
        client.send(protocol_request)
        response_raw = client.receive()
        response = client.unpack(response_raw, protocol_request)
        print response

        login_request = client.kXR_login(username='******')
        client.send(login_request)
        response_raw = client.receive()
        response = client.unpack(response_raw, login_request)
        sessid = response.sessid
        print response

        # Check if we need to auth
        if len(response.sec):
            auth_request = client.kXR_auth(authtoken=response.sec)
            client.send(auth_request)
            response_raw = client.receive()
            response = client.unpack(response_raw, auth_request)
            print response

            # Check if we need to authmore
            while response.status == XResponseType.kXR_authmore:
                print 'Client %s: more authentication needed' % context[
                    'streamid']
                auth_request = client.kXR_auth(contcred=response.data)
                client.send(auth_request)
                response_raw = client.receive()
                response = client.unpack(response_raw, auth_request)
                print response

        if response.status == XResponseType.kXR_ok:
            print "Client %s: logged in successfully" % context['streamid']
        else:
            print "Client %S: login failed (%s): %s" % \
                  (context['streamid'], response.status, response.errmsg)
  def __call__(self, context):
    client = ImposterClient(context)

    # The following line will to the equivalent of the rest of this method,
    # using sensible default values.
    #
    # sess_id = client.do_full_handshake()
    handshake_request = client.handshake()
    client.send(handshake_request)
    response_raw = client.receive()
    response = client.unpack(response_raw, handshake_request)
    print response

    protocol_request = client.kXR_protocol()
    client.send(protocol_request)
    response_raw = client.receive()
    response = client.unpack(response_raw, protocol_request)
    print response

    login_request = client.kXR_login(username='******')
    client.send(login_request)
    response_raw = client.receive()
    response = client.unpack(response_raw, login_request)
    sessid = response.sessid
    print response

    # Check if we need to auth
    if len(response.sec):
      auth_request = client.kXR_auth(authtoken=response.sec)
      client.send(auth_request)
      response_raw = client.receive()
      response = client.unpack(response_raw, auth_request)
      print response

      # Check if we need to authmore
      while response.status == XResponseType.kXR_authmore:
        print 'Client %s: more authentication needed' % context['streamid']
        auth_request = client.kXR_auth(contcred=response.data)
        client.send(auth_request)
        response_raw = client.receive()
        response = client.unpack(response_raw, auth_request)
        print response

    if response.status == XResponseType.kXR_ok:
      print "Client %s: logged in successfully" % context['streamid']
    else:
      print "Client %S: login failed (%s): %s" % \
            (context['streamid'], response.status, response.errmsg)