Commit 3ee3c44d authored by Jeromy's avatar Jeromy

flush!

parent 65385b37
...@@ -34,7 +34,7 @@ func Pin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Wr ...@@ -34,7 +34,7 @@ func Pin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Wr
return fmt.Errorf("pin: %v", err) return fmt.Errorf("pin: %v", err)
} }
} }
return nil return n.Pinning.Flush()
} }
func Unpin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error { func Unpin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
...@@ -54,5 +54,5 @@ func Unpin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io. ...@@ -54,5 +54,5 @@ func Unpin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.
return fmt.Errorf("pin: %v", err) return fmt.Errorf("pin: %v", err)
} }
} }
return nil return n.Pinning.Flush()
} }
...@@ -3,6 +3,8 @@ package pin ...@@ -3,6 +3,8 @@ package pin
import ( import (
//ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go" //ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
"bytes"
"encoding/json"
"sync" "sync"
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go" ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
...@@ -175,19 +177,41 @@ func LoadPinner(d ds.Datastore, dserv *mdag.DAGService) (Pinner, error) { ...@@ -175,19 +177,41 @@ func LoadPinner(d ds.Datastore, dserv *mdag.DAGService) (Pinner, error) {
func (p *pinner) Flush() error { func (p *pinner) Flush() error {
p.lock.RLock() p.lock.RLock()
defer p.lock.RUnlock() defer p.lock.RUnlock()
buf := new(bytes.Buffer)
enc := json.NewEncoder(buf)
recurse := p.recursePin.GetKeys() recurse := p.recursePin.GetKeys()
err := p.dstore.Put(recursePinDatastoreKey, recurse) err := enc.Encode(recurse)
if err != nil { if err != nil {
return err return err
} }
err = p.dstore.Put(recursePinDatastoreKey, buf.Bytes())
if err != nil {
return err
}
buf = new(bytes.Buffer)
enc = json.NewEncoder(buf)
direct := p.directPin.GetKeys() direct := p.directPin.GetKeys()
err = p.dstore.Put(directPinDatastoreKey, direct) err = enc.Encode(direct)
if err != nil {
return err
}
err = p.dstore.Put(directPinDatastoreKey, buf.Bytes())
if err != nil {
return err
}
buf = new(bytes.Buffer)
enc = json.NewEncoder(buf)
err = enc.Encode(p.indirPin.refCounts)
if err != nil { if err != nil {
return err return err
} }
err = p.dstore.Put(indirectPinDatastoreKey, p.indirPin.refCounts) err = p.dstore.Put(indirectPinDatastoreKey, buf.Bytes())
if err != nil { if err != nil {
return err return err
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment