#include <stdlib.h>
#include <time.h>

#include "cca.h"
#include "RandRandomGenerator_CCA.h"
#include "macros_CCA.h"

namespace randomgen
{
  namespace ccaimpl
  {

    RandRandomGenerator::RandRandomGenerator ()
    {
      frameworkServices = 0;
    }

    /**
     * Use rand() to return a double pseudo-random number between 0 and 1.
     */
    double RandRandomGenerator::getRandomNumber ()
    {
      double random_value = static_cast < double >(rand ());
        return random_value / LONG_MAX;
    }

    void RandRandomGenerator::setServices (gov::cca::Services * services)
    {
      if (services != 0)
        {
          frameworkServices = services;

          // Provide a RandomGenerator port
          gov::cca::PortInfo * portInfo =
            frameworkServices->createPortInfo ("RandomGeneratorPort",
                                               "randomgen.ccaports.RandomGenerator",
                                               0);
          if (portInfo != 0)
            frameworkServices->addProvidesPort (this, portInfo);
        }
      else
        {
          // Close down if not closed already
          if (frameworkServices)
            frameworkServices->removeProvidesPort ("RandomGeneratorPort");
          frameworkServices = 0;
        }
    }

  }
}