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
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 {
......@@ -54,5 +54,5 @@ func Unpin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.
return fmt.Errorf("pin: %v", err)
}
}
return nil
return n.Pinning.Flush()
}
......@@ -3,6 +3,8 @@ package pin
import (
//ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
"bytes"
"encoding/json"
"sync"
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) {
func (p *pinner) Flush() error {
p.lock.RLock()
defer p.lock.RUnlock()
buf := new(bytes.Buffer)
enc := json.NewEncoder(buf)
recurse := p.recursePin.GetKeys()
err := p.dstore.Put(recursePinDatastoreKey, recurse)
err := enc.Encode(recurse)
if err != nil {
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()
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 {
return err
}
err = p.dstore.Put(indirectPinDatastoreKey, p.indirPin.refCounts)
err = p.dstore.Put(indirectPinDatastoreKey, buf.Bytes())
if err != nil {
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