From b98cf172096d13bb8adbc9f0b978f7a9fde38143 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 3 Sep 2014 16:46:42 -0700 Subject: [PATCH] wal: move pb files to walpb --- wal/decoder.go | 5 +++-- wal/encoder.go | 3 ++- wal/record_test.go | 24 +++++++++++++----------- wal/wal.go | 17 +++++++++-------- wal/{ => walpb}/genproto.sh | 0 wal/{ => walpb}/record.go | 10 ++++++++-- wal/{ => walpb}/record.pb.go | 4 ++-- wal/{ => walpb}/record.proto | 2 +- 8 files changed, 38 insertions(+), 27 deletions(-) rename wal/{ => walpb}/genproto.sh (100%) rename wal/{ => walpb}/record.go (81%) rename wal/{ => walpb}/record.pb.go (98%) rename wal/{ => walpb}/record.proto (96%) diff --git a/wal/decoder.go b/wal/decoder.go index bf3382246..4921f5ba6 100644 --- a/wal/decoder.go +++ b/wal/decoder.go @@ -8,6 +8,7 @@ import ( "github.com/coreos/etcd/crc" "github.com/coreos/etcd/raft/raftpb" + "github.com/coreos/etcd/wal/walpb" ) type decoder struct { @@ -24,7 +25,7 @@ func newDecoder(rc io.ReadCloser) *decoder { } } -func (d *decoder) decode(rec *Record) error { +func (d *decoder) decode(rec *walpb.Record) error { rec.Reset() l, err := readInt64(d.br) if err != nil { @@ -42,7 +43,7 @@ func (d *decoder) decode(rec *Record) error { return nil } d.crc.Write(rec.Data) - return rec.validate(d.crc.Sum32()) + return rec.Validate(d.crc.Sum32()) } func (d *decoder) updateCRC(prevCrc uint32) { diff --git a/wal/encoder.go b/wal/encoder.go index 38d94d8a0..2e3ea29f6 100644 --- a/wal/encoder.go +++ b/wal/encoder.go @@ -7,6 +7,7 @@ import ( "io" "github.com/coreos/etcd/crc" + "github.com/coreos/etcd/wal/walpb" ) type encoder struct { @@ -21,7 +22,7 @@ func newEncoder(w io.Writer, prevCrc uint32) *encoder { } } -func (e *encoder) encode(rec *Record) error { +func (e *encoder) encode(rec *walpb.Record) error { e.crc.Write(rec.Data) rec.Crc = e.crc.Sum32() data, err := rec.Marshal() diff --git a/wal/record_test.go b/wal/record_test.go index 1ee5077a5..562152c74 100644 --- a/wal/record_test.go +++ b/wal/record_test.go @@ -23,6 +23,8 @@ import ( "io/ioutil" "reflect" "testing" + + "github.com/coreos/etcd/wal/walpb" ) func TestReadRecord(t *testing.T) { @@ -32,18 +34,18 @@ func TestReadRecord(t *testing.T) { tests := []struct { data []byte - wr *Record + wr *walpb.Record we error }{ - {infoRecord, &Record{Type: 1, Crc: crc32.Checksum(infoData, crcTable), Data: infoData}, nil}, - {[]byte(""), &Record{}, io.EOF}, - {infoRecord[:len(infoRecord)-len(infoData)-8], &Record{}, io.ErrUnexpectedEOF}, - {infoRecord[:len(infoRecord)-len(infoData)], &Record{}, io.ErrUnexpectedEOF}, - {infoRecord[:len(infoRecord)-8], &Record{}, io.ErrUnexpectedEOF}, - {badInfoRecord, &Record{}, ErrCRCMismatch}, + {infoRecord, &walpb.Record{Type: 1, Crc: crc32.Checksum(infoData, crcTable), Data: infoData}, nil}, + {[]byte(""), &walpb.Record{}, io.EOF}, + {infoRecord[:len(infoRecord)-len(infoData)-8], &walpb.Record{}, io.ErrUnexpectedEOF}, + {infoRecord[:len(infoRecord)-len(infoData)], &walpb.Record{}, io.ErrUnexpectedEOF}, + {infoRecord[:len(infoRecord)-8], &walpb.Record{}, io.ErrUnexpectedEOF}, + {badInfoRecord, &walpb.Record{}, walpb.ErrCRCMismatch}, } - rec := &Record{} + rec := &walpb.Record{} for i, tt := range tests { buf := bytes.NewBuffer(tt.data) decoder := newDecoder(ioutil.NopCloser(buf)) @@ -54,17 +56,17 @@ func TestReadRecord(t *testing.T) { if !reflect.DeepEqual(e, tt.we) { t.Errorf("#%d: err = %v, want %v", i, e, tt.we) } - rec = &Record{} + rec = &walpb.Record{} } } func TestWriteRecord(t *testing.T) { - b := &Record{} + b := &walpb.Record{} typ := int64(0xABCD) d := []byte("Hello world!") buf := new(bytes.Buffer) e := newEncoder(buf, 0) - e.encode(&Record{Type: typ, Data: d}) + e.encode(&walpb.Record{Type: typ, Data: d}) e.flush() decoder := newDecoder(ioutil.NopCloser(buf)) err := decoder.decode(b) diff --git a/wal/wal.go b/wal/wal.go index 534e1c4c5..acce3dc03 100644 --- a/wal/wal.go +++ b/wal/wal.go @@ -27,6 +27,7 @@ import ( "sort" "github.com/coreos/etcd/raft/raftpb" + "github.com/coreos/etcd/wal/walpb" ) const ( @@ -37,8 +38,8 @@ const ( ) var ( - ErrIdMismatch = fmt.Errorf("wal: unmatch id") - ErrNotFound = fmt.Errorf("wal: file is not found") + ErrIdMismatch = errors.New("wal: unmatch id") + ErrNotFound = errors.New("wal: file is not found") ErrCRCMismatch = errors.New("wal: crc mismatch") crcTable = crc32.MakeTable(crc32.Castagnoli) ) @@ -140,7 +141,7 @@ func (w *WAL) ReadAll() (int64, raftpb.State, []raftpb.Entry, error) { var state raftpb.State var entries []raftpb.Entry - rec := &Record{} + rec := &walpb.Record{} decoder := w.decoder var err error for err = decoder.decode(rec); err == nil; err = decoder.decode(rec) { @@ -163,7 +164,7 @@ func (w *WAL) ReadAll() (int64, raftpb.State, []raftpb.Entry, error) { crc := decoder.crc.Sum32() // current crc of decoder must match the crc of the record. // do no need to match 0 crc, since the decoder is a new one at this case. - if crc != 0 && rec.validate(crc) != nil { + if crc != 0 && rec.Validate(crc) != nil { state.Reset() return 0, state, nil, ErrCRCMismatch } @@ -234,7 +235,7 @@ func (w *WAL) SaveInfo(i *raftpb.Info) error { if err != nil { panic(err) } - rec := &Record{Type: infoType, Data: b} + rec := &walpb.Record{Type: infoType, Data: b} return w.encoder.encode(rec) } @@ -243,7 +244,7 @@ func (w *WAL) SaveEntry(e *raftpb.Entry) error { if err != nil { panic(err) } - rec := &Record{Type: entryType, Data: b} + rec := &walpb.Record{Type: entryType, Data: b} return w.encoder.encode(rec) } @@ -253,10 +254,10 @@ func (w *WAL) SaveState(s *raftpb.State) error { if err != nil { panic(err) } - rec := &Record{Type: stateType, Data: b} + rec := &walpb.Record{Type: stateType, Data: b} return w.encoder.encode(rec) } func (w *WAL) saveCrc(prevCrc uint32) error { - return w.encoder.encode(&Record{Type: crcType, Crc: prevCrc}) + return w.encoder.encode(&walpb.Record{Type: crcType, Crc: prevCrc}) } diff --git a/wal/genproto.sh b/wal/walpb/genproto.sh similarity index 100% rename from wal/genproto.sh rename to wal/walpb/genproto.sh diff --git a/wal/record.go b/wal/walpb/record.go similarity index 81% rename from wal/record.go rename to wal/walpb/record.go index 799649f56..54c84b28e 100644 --- a/wal/record.go +++ b/wal/walpb/record.go @@ -14,9 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -package wal +package walpb -func (rec *Record) validate(crc uint32) error { +import "errors" + +var ( + ErrCRCMismatch = errors.New("walpb: crc mismatch") +) + +func (rec *Record) Validate(crc uint32) error { if rec.Crc == crc { return nil } diff --git a/wal/record.pb.go b/wal/walpb/record.pb.go similarity index 98% rename from wal/record.pb.go rename to wal/walpb/record.pb.go index b4fab1f21..6d9267c89 100644 --- a/wal/record.pb.go +++ b/wal/walpb/record.pb.go @@ -3,7 +3,7 @@ // DO NOT EDIT! /* - Package wal is a generated protocol buffer package. + Package walpb is a generated protocol buffer package. It is generated from these files: record.proto @@ -11,7 +11,7 @@ It has these top-level messages: Record */ -package wal +package walpb import proto "github.com/coreos/etcd/third_party/code.google.com/p/gogoprotobuf/proto" import json "encoding/json" diff --git a/wal/record.proto b/wal/walpb/record.proto similarity index 96% rename from wal/record.proto rename to wal/walpb/record.proto index d10511c69..a236f0481 100644 --- a/wal/record.proto +++ b/wal/walpb/record.proto @@ -1,4 +1,4 @@ -package wal; +package walpb; import "code.google.com/p/gogoprotobuf/gogoproto/gogo.proto";