package mr // // RPC definitions. // // remember to capitalize all names. // import "os" import "strconv" // // example to show how to declare the arguments // and reply for an RPC. // type ExampleArgs struct { X int } type ExampleReply struct { Y int } // Add your RPC definitions here. type JobType uint8 const ( Map JobType = iota Reduce ) type MapJob struct { //Index int InputFile string ReducerCount int //IntermediateFiles []string } type ReduceJob struct { ReducerNumber int IntermediateFiles []string } type MapResult struct { InputFile string IntermediateFiles []string WorkerId int } type RegisterArgs struct { // empty } type RegisterReply struct { WorkerId int } type GetJobArgs struct { WorkerId int } type GetJobReply struct { JobType JobType MapJob MapJob ReduceJob ReduceJob Finished bool } type FinishReply struct { } // Cook up a unique-ish UNIX-domain socket name // in /var/tmp, for the coordinator. // Can't use the current directory since // Athena AFS doesn't support UNIX-domain sockets. func coordinatorSock() string { s := "/var/tmp/5840-mr-" s += strconv.Itoa(os.Getuid()) return s }