/**
 * @file placement.h
 *
 * @brief Placement main file (header).
 *
 * Copyright 2007-2008, Freie Universitaet Berlin. All rights reserved.
 * Please refer to the COPYING file for detailed licensing information.
 *
 * @author Georg Wittenburg
 *
 * $Id: placement.h 2685 2008-06-25 16:38:56Z wittenbu $
 */

#ifndef PLACEMENT_H
#define PLACEMENT_H

#include "../types.h"
#include "../service/service_types.h"
#include "placement_types.h"

// Interface to main module.
void PLACEMENT_init();
void PLACEMENT_start();
void PLACEMENT_stop();
void PLACEMENT_finalize();
void PLACEMENT_recv(const packet_header_t* header, const void* payload);
bool PLACEMENT_command(int argc, const char*const* argv);

// Interface provided by this module.
void PLACEMENT_alloc_stats(SERVICE_service_t* service);
void PLACEMENT_free_stats(SERVICE_service_t* service);
void PLACEMENT_stat_service_request(SERVICE_service_t* service, C_addr_t from, C_addr_t last_hop, uint8_t hops, size_t size);
void PLACEMENT_start_algorithm(SERVICE_service_t* service);
void PLACEMENT_stop_algorithm(SERVICE_service_t* service);
void PLACEMENT_trigger_algorithm(SERVICE_service_t* service);

#endif	// PLACEMENT_H
