85 lines
1.2 KiB
Go
85 lines
1.2 KiB
Go
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
|
|
}
|