func (st *Store) setStoreOwner(owner id.Peer) error { if err := st.fs.MetadataPut("id", []byte(owner.ID())); err != nil { return err } if err := st.fs.MetadataPut("hash", []byte(owner.Hash())); err != nil { return err } return nil }
func (cp *conversationPool) rememberUnlocked(peer id.Peer, cnv Conversation) error { cp.open[peer.ID()] = cnv // Create a new pinger if not already done: if _, ok := cp.heartbeat[peer.ID()]; !ok { pinger, err := cp.rp.IPFS.Ping(peer.Hash()) if err != nil { return err } cp.heartbeat[peer.ID()] = pinger } return nil }
// NewConversation returns a conversation that exchanges data over `conn`. func NewConversation(conn net.Conn, node *ipfsutil.Node, peer id.Peer) (*Conversation, error) { proto, err := wrapConnAsProto(conn, node, peer.Hash()) if err != nil { return nil, err } cnv := &Conversation{ conn: conn, node: node, peer: peer, proto: proto, notifees: make(map[int64]transfer.AsyncFunc), } // Cater responses: go func() { for { resp := wire.Response{} err := cnv.proto.Recv(&resp) if isEOFError(err) { break } if err != nil { log.Warningf("Error while receiving data: %v", err) continue } respID := resp.ID cnv.Lock() fn, ok := cnv.notifees[respID] if !ok { log.Warningf("No such id: %v", respID) cnv.Unlock() continue } // Remove the callback delete(cnv.notifees, respID) cnv.Unlock() fn(&resp) } }() return cnv, nil }
func NewRemoteFromPeer(peer id.Peer) Remote { return NewRemote(peer.ID(), peer.Hash()) }
func (id *ipfsDialer) Dial(peer id.Peer) (net.Conn, error) { log.Debugf("IPFS dialing to %v", peer.Hash()) return id.node.Dial(peer.Hash(), id.layer.ProtocolID()) }