/* Generated by Together */

#ifndef _AG_ACTIVATIONREQUEST_H_
#define _AG_ACTIVATIONREQUEST_H_

#include <boost/shared_ptr.hpp>

namespace OnlineActivation
{

class Response;
class RequestObserver;

/**
 * Activation request class.
 * Provides functions to submit request, get response and post reply.
 */
class __declspec(novtable) Request
{
public:


	/**
	 * Submits activation request.
	 * This method initiates asynchronous data transfer to activation server. 
	 * If transfer is already in progress and client tries to submit request
	 * an ActivationError is thrown with REQUEST_PENDING code.
	 * @exception ActivationError error code specifies exception reason.
	 */
	virtual boost::shared_ptr<Response> Submit(RequestObserver& observer) = 0;

protected:

	/**
	 * Destruction via delete is not allowed. 
	 */
	~Request() {}

	/** @link dependency 
	 * @stereotype instantiate*/
	/*# Response lnkResponse; */
};

} // namespace OnlineActivation

#endif //_AG_ACTIVATIONREQUEST_H_
