Skip to content

Commit f43f6fb

Browse files
Code changes to make store and pull symmetrical.
1 parent ce7bbce commit f43f6fb

4 files changed

Lines changed: 29 additions & 29 deletions

File tree

chapter10/listing01/listing01.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,25 +71,25 @@ func pull(x *Xenia, data []Data) (int, error) {
7171
return len(data), nil
7272
}
7373

74-
// store knows how to store bulks of data from Pillar.
75-
func store(p *Pillar, data []Data) error {
76-
for _, d := range data {
74+
// store knows how to store bulks of data into Pillar.
75+
func store(p *Pillar, data []Data) (int, error) {
76+
for i, d := range data {
7777
if err := p.Store(d); err != nil {
78-
return err
78+
return i, err
7979
}
8080
}
8181

82-
return nil
82+
return len(data), nil
8383
}
8484

8585
// Copy knows how to pull and store data from the System.
8686
func Copy(sys *System, batch int) error {
87-
for {
88-
data := make([]Data, batch)
87+
data := make([]Data, batch)
8988

89+
for {
9090
i, err := pull(&sys.Xenia, data)
9191
if i > 0 {
92-
if err := store(&sys.Pillar, data[:i]); err != nil {
92+
if _, err := store(&sys.Pillar, data[:i]); err != nil {
9393
return err
9494
}
9595
}

chapter10/listing02/listing02.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,24 +84,24 @@ func pull(p Puller, data []Data) (int, error) {
8484
}
8585

8686
// store knows how to store bulks of data from any Storer.
87-
func store(s Storer, data []Data) error {
88-
for _, d := range data {
87+
func store(s Storer, data []Data) (int, error) {
88+
for i, d := range data {
8989
if err := s.Store(d); err != nil {
90-
return err
90+
return i, err
9191
}
9292
}
9393

94-
return nil
94+
return len(data), nil
9595
}
9696

9797
// Copy knows how to pull and store data from the System.
9898
func Copy(sys *System, batch int) error {
99-
for {
100-
data := make([]Data, batch)
99+
data := make([]Data, batch)
101100

101+
for {
102102
i, err := pull(&sys.Xenia, data)
103103
if i > 0 {
104-
if err := store(&sys.Pillar, data[:i]); err != nil {
104+
if _, err := store(&sys.Pillar, data[:i]); err != nil {
105105
return err
106106
}
107107
}

chapter10/listing03/listing03.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,24 +90,24 @@ func pull(p Puller, data []Data) (int, error) {
9090
}
9191

9292
// store knows how to store bulks of data from any Storer.
93-
func store(s Storer, data []Data) error {
94-
for _, d := range data {
93+
func store(s Storer, data []Data) (int, error) {
94+
for i, d := range data {
9595
if err := s.Store(d); err != nil {
96-
return err
96+
return i, err
9797
}
9898
}
9999

100-
return nil
100+
return len(data), nil
101101
}
102102

103103
// Copy knows how to pull and store data from any System.
104104
func Copy(ps PullStorer, batch int) error {
105-
for {
106-
data := make([]Data, batch)
105+
data := make([]Data, batch)
107106

107+
for {
108108
i, err := pull(ps, data)
109109
if i > 0 {
110-
if err := store(ps, data[:i]); err != nil {
110+
if _, err := store(ps, data[:i]); err != nil {
111111
return err
112112
}
113113
}

chapter10/listing04/listing04.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,24 +90,24 @@ func pull(p Puller, data []Data) (int, error) {
9090
}
9191

9292
// store knows how to store bulks of data from any Storer.
93-
func store(s Storer, data []Data) error {
94-
for _, d := range data {
93+
func store(s Storer, data []Data) (int, error) {
94+
for i, d := range data {
9595
if err := s.Store(d); err != nil {
96-
return err
96+
return i, err
9797
}
9898
}
9999

100-
return nil
100+
return len(data), nil
101101
}
102102

103103
// Copy knows how to pull and store data from any System.
104104
func Copy(ps PullStorer, batch int) error {
105-
for {
106-
data := make([]Data, batch)
105+
data := make([]Data, batch)
107106

107+
for {
108108
i, err := pull(ps, data)
109109
if i > 0 {
110-
if err := store(ps, data[:i]); err != nil {
110+
if _, err := store(ps, data[:i]); err != nil {
111111
return err
112112
}
113113
}

0 commit comments

Comments
 (0)