diff options
| author | Chris Lu <chris.lu@gmail.com> | 2012-08-23 22:46:54 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2012-08-23 22:46:54 -0700 |
| commit | 5e3ecc1b82dd08442fa3d9e52d15e68c82e8add6 (patch) | |
| tree | 4aafb42e1c15208eeac0dbeb596183f45e5b35ea /weed-fs/src/pkg | |
| parent | 03f4c0b832697756eece9817de7e4b80ef55ef0e (diff) | |
| download | seaweedfs-5e3ecc1b82dd08442fa3d9e52d15e68c82e8add6.tar.xz seaweedfs-5e3ecc1b82dd08442fa3d9e52d15e68c82e8add6.zip | |
adding VolumeId type
Diffstat (limited to 'weed-fs/src/pkg')
| -rw-r--r-- | weed-fs/src/pkg/storage/store.go | 20 | ||||
| -rw-r--r-- | weed-fs/src/pkg/storage/volume.go | 12 |
2 files changed, 20 insertions, 12 deletions
diff --git a/weed-fs/src/pkg/storage/store.go b/weed-fs/src/pkg/storage/store.go index 5a686d2db..cd32a0ccf 100644 --- a/weed-fs/src/pkg/storage/store.go +++ b/weed-fs/src/pkg/storage/store.go @@ -12,7 +12,7 @@ import ( ) type Store struct { - volumes map[uint64]*Volume + volumes map[VolumeId]*Volume dir string Port int PublicUrl string @@ -20,7 +20,7 @@ type Store struct { func NewStore(port int, publicUrl, dirname string, volumeListString string) (s *Store) { s = &Store{Port: port, PublicUrl: publicUrl, dir: dirname} - s.volumes = make(map[uint64]*Volume) + s.volumes = make(map[VolumeId]*Volume) s.AddVolume(volumeListString) @@ -35,7 +35,7 @@ func (s *Store) AddVolume(volumeListString string) error { if err != nil { return errors.New("Volume Id " + id_string + " is not a valid unsigned integer!") } - s.addVolume(id) + s.addVolume(VolumeId(id)) } else { pair := strings.Split(range_string, "-") start, start_err := strconv.ParseUint(pair[0], 10, 64) @@ -47,17 +47,17 @@ func (s *Store) AddVolume(volumeListString string) error { return errors.New("Volume End Id" + pair[1] + " is not a valid unsigned integer!") } for id := start; id <= end; id++ { - s.addVolume(id) + s.addVolume(VolumeId(id)) } } } return nil } -func (s *Store) addVolume(vid uint64) error { +func (s *Store) addVolume(vid VolumeId) error { if s.volumes[vid] != nil { - return errors.New("Volume Id " + strconv.FormatUint(vid, 10) + " already exists!") + return errors.New("Volume Id " + vid.String() + " already exists!") } - s.volumes[vid] = NewVolume(s.dir, uint32(vid)) + s.volumes[vid] = NewVolume(s.dir, vid) return nil } func (s *Store) Status() *[]*topology.VolumeInfo { @@ -88,12 +88,12 @@ func (s *Store) Close() { v.Close() } } -func (s *Store) Write(i uint64, n *Needle) uint32 { +func (s *Store) Write(i VolumeId, n *Needle) uint32 { return s.volumes[i].write(n) } -func (s *Store) Delete(i uint64, n *Needle) uint32 { +func (s *Store) Delete(i VolumeId, n *Needle) uint32 { return s.volumes[i].delete(n) } -func (s *Store) Read(i uint64, n *Needle) (int, error) { +func (s *Store) Read(i VolumeId, n *Needle) (int, error) { return s.volumes[i].read(n) } diff --git a/weed-fs/src/pkg/storage/volume.go b/weed-fs/src/pkg/storage/volume.go index 01d93efb7..40e3eaaf4 100644 --- a/weed-fs/src/pkg/storage/volume.go +++ b/weed-fs/src/pkg/storage/volume.go @@ -13,8 +13,16 @@ const ( SuperBlockSize = 8 ) +type VolumeId uint32 +func NewVolumeId(vid string) (VolumeId,error) { + volumeId, err := strconv.ParseUint(vid, 10, 64) + return VolumeId(volumeId), err +} +func (vid *VolumeId) String() string{ + return strconv.FormatUint(uint64(*vid), 10) +} type Volume struct { - Id uint32 + Id VolumeId dir string dataFile *os.File nm *NeedleMap @@ -22,7 +30,7 @@ type Volume struct { accessLock sync.Mutex } -func NewVolume(dirname string, id uint32) (v *Volume) { +func NewVolume(dirname string, id VolumeId) (v *Volume) { var e error v = &Volume{dir: dirname, Id: id} fileName := strconv.FormatUint(uint64(v.Id), 10) |
