
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_rmi_dgc_LeaseRenewingTask__
#define __gnu_java_rmi_dgc_LeaseRenewingTask__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace rmi
      {
        namespace dgc
        {
            class LeaseRenewingTask;
        }
        namespace server
        {
            class UnicastRef;
        }
      }
    }
  }
  namespace java
  {
    namespace rmi
    {
      namespace dgc
      {
          class Lease;
      }
    }
  }
}

class gnu::java::rmi::dgc::LeaseRenewingTask : public ::java::lang::Object
{

public:
  LeaseRenewingTask(::gnu::java::rmi::server::UnicastRef *);
  static void scheduleLeases(::gnu::java::rmi::server::UnicastRef *);
  virtual void schedule(::java::rmi::dgc::Lease *);
  virtual void renew();
  virtual ::java::rmi::dgc::Lease * notifyDGC(::gnu::java::rmi::server::UnicastRef *);
  static jlong REQUEST_LEASE_DURATION;
public: // actually package-private
  ::java::util::LinkedList * __attribute__((aligned(__alignof__( ::java::lang::Object)))) ref;
  ::java::rmi::dgc::Lease * lease;
  static ::java::util::Timer * timer;
  static ::java::util::WeakHashMap * existingTasks;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_rmi_dgc_LeaseRenewingTask__
