Skip to content

Commit

Permalink
Code changes to make store and pull symmetrical.
Browse files Browse the repository at this point in the history
  • Loading branch information
ardan-bkennedy committed Jul 27, 2016
1 parent ce7bbce commit f43f6fb
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 29 deletions.
16 changes: 8 additions & 8 deletions chapter10/listing01/listing01.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,25 +71,25 @@ func pull(x *Xenia, data []Data) (int, error) {
return len(data), nil
}

// store knows how to store bulks of data from Pillar.
func store(p *Pillar, data []Data) error {
for _, d := range data {
// store knows how to store bulks of data into Pillar.
func store(p *Pillar, data []Data) (int, error) {
for i, d := range data {
if err := p.Store(d); err != nil {
return err
return i, err
}
}

return nil
return len(data), nil
}

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

for {
i, err := pull(&sys.Xenia, data)
if i > 0 {
if err := store(&sys.Pillar, data[:i]); err != nil {
if _, err := store(&sys.Pillar, data[:i]); err != nil {
return err
}
}
Expand Down
14 changes: 7 additions & 7 deletions chapter10/listing02/listing02.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,24 +84,24 @@ func pull(p Puller, data []Data) (int, error) {
}

// store knows how to store bulks of data from any Storer.
func store(s Storer, data []Data) error {
for _, d := range data {
func store(s Storer, data []Data) (int, error) {
for i, d := range data {
if err := s.Store(d); err != nil {
return err
return i, err
}
}

return nil
return len(data), nil
}

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

for {
i, err := pull(&sys.Xenia, data)
if i > 0 {
if err := store(&sys.Pillar, data[:i]); err != nil {
if _, err := store(&sys.Pillar, data[:i]); err != nil {
return err
}
}
Expand Down
14 changes: 7 additions & 7 deletions chapter10/listing03/listing03.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,24 +90,24 @@ func pull(p Puller, data []Data) (int, error) {
}

// store knows how to store bulks of data from any Storer.
func store(s Storer, data []Data) error {
for _, d := range data {
func store(s Storer, data []Data) (int, error) {
for i, d := range data {
if err := s.Store(d); err != nil {
return err
return i, err
}
}

return nil
return len(data), nil
}

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

for {
i, err := pull(ps, data)
if i > 0 {
if err := store(ps, data[:i]); err != nil {
if _, err := store(ps, data[:i]); err != nil {
return err
}
}
Expand Down
14 changes: 7 additions & 7 deletions chapter10/listing04/listing04.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,24 +90,24 @@ func pull(p Puller, data []Data) (int, error) {
}

// store knows how to store bulks of data from any Storer.
func store(s Storer, data []Data) error {
for _, d := range data {
func store(s Storer, data []Data) (int, error) {
for i, d := range data {
if err := s.Store(d); err != nil {
return err
return i, err
}
}

return nil
return len(data), nil
}

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

for {
i, err := pull(ps, data)
if i > 0 {
if err := store(ps, data[:i]); err != nil {
if _, err := store(ps, data[:i]); err != nil {
return err
}
}
Expand Down

0 comments on commit f43f6fb

Please sign in to comment.