Final-Mapreduce / mapreduce.h
mapreduce.h
Raw
#ifndef __mapreduce_h__
#define __mapreduce_h__

// Different function pointer types used by MR
typedef char *(*Getter)(char *key, int partition_number);

typedef void (*Mapper)(char *file_name);
// `get_state` and `get_next` will only be called once inside the reducer in eager mode!
// `get_state` is NULL in simple mode and `get_next` can be called until you get NULL.
typedef void (*Reducer)(char *key, Getter get_next, int partition_number);
typedef unsigned long (*Partitioner)(char *key, int num_partitions);

// External functions: these are what *you must implement*
void MR_Emit(char *key, char *value);

unsigned long MR_DefaultHashPartition(char *key, int num_partitions);

void MR_Run(int argc, char *argv[],
        Mapper map, int num_mappers,
        Reducer reduce, int num_reducers,
        Partitioner partition);

#endif // __mapreduce_h__