/* int connect(int no_retries=30, int retry_delay_in_seconds=1, int verbose=0);
   3 args SYNC / 4 args ASYNC
*/
Handle<Value> Ndb_cluster_connection_connect(const Arguments &args) {
    DEBUG_MARKER(UDEB_DETAIL);
    HandleScope scope;
    Local<Value> ret;

    REQUIRE_MIN_ARGS(3);
    REQUIRE_MAX_ARGS(4);

    typedef NativeMethodCall_3_ <int, Ndb_cluster_connection, int, int, int> MCALL;
    MCALL * mcallptr = new MCALL(& Ndb_cluster_connection::connect, args);

    if(args.Length() == 4) {
        DEBUG_PRINT_DETAIL("async");
        mcallptr->runAsync();
        ret = JS_VOID_RETURN;
    }
    else {
        DEBUG_PRINT_DETAIL("sync");
        mcallptr->run();
        ret = mcallptr->jsReturnVal();
        delete mcallptr;
    }

    return scope.Close(ret);
}
/*   int wait_until_ready(int timeout_for_first_alive,
                          int timeout_after_first_alive,
                          callback);
     2 args SYNC / 3 args ASYNC
*/
Handle<Value> Ndb_cluster_connection_wait_until_ready(const Arguments &args) {
  DEBUG_MARKER(UDEB_DETAIL);
  HandleScope scope;
  Local<Value> ret = Local<Value>(*Undefined());
  
  REQUIRE_MIN_ARGS(2);
  REQUIRE_MAX_ARGS(3);
  
  typedef NativeMethodCall_2_<int, Ndb_cluster_connection, int, int> MCALL;
  MCALL * mcallptr = new MCALL(& Ndb_cluster_connection::wait_until_ready, args);

  if(args.Length() == 3) {
    mcallptr->runAsync();
  }
  else {
    mcallptr->run();
    ret = mcallptr->jsReturnVal();
    delete mcallptr;
  };
  
  return scope.Close(ret);
}