reformatting

This commit is contained in:
Chris Lu
2012-09-03 19:18:02 -07:00
parent 09542d82b4
commit fbe828e486
2 changed files with 66 additions and 73 deletions

View File

@@ -1,10 +1,10 @@
package main package main
import ( import (
"pkg/directory"
"encoding/json" "encoding/json"
"log" "log"
"net/http" "net/http"
"pkg/directory"
"pkg/storage" "pkg/storage"
"strconv" "strconv"
"strings" "strings"
@@ -41,17 +41,17 @@ func dirLookupHandler(w http.ResponseWriter, r *http.Request) {
volumeId, _ := storage.NewVolumeId(vid) volumeId, _ := storage.NewVolumeId(vid)
machine, e := mapper.Get(volumeId) machine, e := mapper.Get(volumeId)
if e == nil { if e == nil {
writeJson(w, r, machine.Server) writeJson(w, r, map[string]string{"url": machine.Url, "publicUrl": machine.PublicUrl})
} else { } else {
log.Println("Invalid volume id", volumeId) log.Println("Invalid volume id", volumeId)
writeJson(w, r, map[string]string{"error": "volume id " + volumeId.String() + " not found"}) writeJson(w, r, map[string]string{"error": "volume id " + volumeId.String() + " not found"})
} }
} }
func dirAssignHandler(w http.ResponseWriter, r *http.Request) { func dirAssignHandler(w http.ResponseWriter, r *http.Request) {
c:=r.FormValue("count") c := r.FormValue("count")
fid, count, machine, err := mapper.PickForWrite(c) fid, count, machine, err := mapper.PickForWrite(c)
if err == nil { if err == nil {
writeJson(w, r, map[string]string{"fid": fid, "url": machine.Url, "publicUrl":machine.PublicUrl, "count":strconv.Itoa(count)}) writeJson(w, r, map[string]string{"fid": fid, "url": machine.Url, "publicUrl": machine.PublicUrl, "count": strconv.Itoa(count)})
} else { } else {
writeJson(w, r, map[string]string{"error": err.Error()}) writeJson(w, r, map[string]string{"error": err.Error()})
} }

View File

@@ -10,18 +10,11 @@ import (
"sync" "sync"
) )
const ( type Machine struct {
FileIdSaveInterval = 10000 Volumes []storage.VolumeInfo
)
type MachineInfo struct {
Url string //<server name/ip>[:port] Url string //<server name/ip>[:port]
PublicUrl string PublicUrl string
} }
type Machine struct {
Server MachineInfo
Volumes []storage.VolumeInfo
}
type Mapper struct { type Mapper struct {
volumeLock sync.Mutex volumeLock sync.Mutex
@@ -35,7 +28,7 @@ type Mapper struct {
} }
func NewMachine(server, publicUrl string, volumes []storage.VolumeInfo) *Machine { func NewMachine(server, publicUrl string, volumes []storage.VolumeInfo) *Machine {
return &Machine{Server: MachineInfo{Url: server, PublicUrl: publicUrl}, Volumes: volumes} return &Machine{Url: server, PublicUrl: publicUrl, Volumes: volumes}
} }
func NewMapper(dirname string, filename string, volumeSizeLimit uint64) (m *Mapper) { func NewMapper(dirname string, filename string, volumeSizeLimit uint64) (m *Mapper) {
@@ -49,7 +42,7 @@ func NewMapper(dirname string, filename string, volumeSizeLimit uint64) (m *Mapp
return return
} }
func (m *Mapper) PickForWrite(c string) (string, int, *MachineInfo, error) { func (m *Mapper) PickForWrite(c string) (string, int, *Machine, error) {
len_writers := len(m.Writers) len_writers := len(m.Writers)
if len_writers <= 0 { if len_writers <= 0 {
log.Println("No more writable volumes!") log.Println("No more writable volumes!")
@@ -61,11 +54,11 @@ func (m *Mapper) PickForWrite(c string) (string, int, *MachineInfo, error) {
machine := m.Machines[machine_id-1] machine := m.Machines[machine_id-1]
fileId, count := m.sequence.NextFileId(util.ParseInt(c, 1)) fileId, count := m.sequence.NextFileId(util.ParseInt(c, 1))
if count == 0 { if count == 0 {
return "", 0, &m.Machines[rand.Intn(len(m.Machines))].Server, errors.New("Strange count:" + c) return "", 0, m.Machines[rand.Intn(len(m.Machines))], errors.New("Strange count:" + c)
} }
return NewFileId(vid, fileId, rand.Uint32()).String(), count, &machine.Server, nil return NewFileId(vid, fileId, rand.Uint32()).String(), count, machine, nil
} }
return "", 0, &m.Machines[rand.Intn(len(m.Machines))].Server, errors.New("Strangely vid " + vid.String() + " is on no machine!") return "", 0, m.Machines[rand.Intn(len(m.Machines))], errors.New("Strangely vid " + vid.String() + " is on no machine!")
} }
func (m *Mapper) Get(vid storage.VolumeId) (*Machine, error) { func (m *Mapper) Get(vid storage.VolumeId) (*Machine, error) {
machineId := m.vid2machineId[vid] machineId := m.vid2machineId[vid]
@@ -80,7 +73,7 @@ func (m *Mapper) Add(machine Machine) {
m.volumeLock.Lock() m.volumeLock.Lock()
foundExistingMachineId := -1 foundExistingMachineId := -1
for index, entry := range m.Machines { for index, entry := range m.Machines {
if machine.Server.Url == entry.Server.Url { if machine.Url == entry.Url {
foundExistingMachineId = index foundExistingMachineId = index
break break
} }