Commit Graph

197 Commits

Author SHA1 Message Date
Brian Tiger Chow
34e8f3ee26 refactor(core): init DAG and its dependents in shared constructor
fix: remove merkledag import

may need to squash this commit into the merkledag move commit
2015-01-11 01:23:26 -08:00
Brian Tiger Chow
7fa5d81093 refactor(core): rename 2015-01-11 01:23:26 -08:00
Brian Tiger Chow
efb75ee5ba refactor: move add and cat to the core 2015-01-11 01:23:25 -08:00
Brian Tiger Chow
2c3fb43350 feat: expose IpfsNode.Bootstrap() method 2015-01-11 01:23:25 -08:00
Brian Tiger Chow
4c2eda2123 refactor: remove deprecated function 2015-01-11 01:23:25 -08:00
Brian Tiger Chow
57b3ffa533 feat: new core constructor + config options (Standard, Online, Offline) 2015-01-11 01:23:25 -08:00
Juan Batiz-Benet
1bd69b19ac core: make sure to call swarm.FilterAddrs
also move network setup into its own self-contained func
2015-01-10 08:07:19 -08:00
Juan Batiz-Benet
1fa14335b9 core: rearranged initialization a bit 2015-01-04 00:47:27 -08:00
Juan Batiz-Benet
8fb5cf9578 swap net2 -> net 2015-01-02 08:46:46 -08:00
Juan Batiz-Benet
e2698a8733 net -> p2p/net
The net package is the next to move. It will be massaged
a bit still to fix the Network / "NetworkBackend" conflict.
2015-01-02 08:46:45 -08:00
Juan Batiz-Benet
cc0d7c9b57 crypto -> p2p/crypto
The crypto package moves into p2p. Nothing in it so far is ipfs
specific; everything is p2p-general.
2015-01-02 08:46:45 -08:00
Juan Batiz-Benet
89f5cd4c94 introducing p2p pkg
I think it's time to move a lot of the peer-to-peer networking
but-not-ipfs-specific things into its own package: p2p.
This could in the future be split off into its own library.
The first thing to go is the peer.
2015-01-02 08:46:45 -08:00
Juan Batiz-Benet
49cb135ca2 ipfsnet -> swarmnet
swarmnet is a better name for the package, because
it's just a Network implemented with a Swarm.
(ipfsnet will be something slightly different).
2015-01-02 08:46:44 -08:00
Juan Batiz-Benet
4807127def net: move Network implementation to own pkg
I needed the network implementation in its own
package, because I'll be writing several services that
will plug into _it_ that shouldn't be part of the core net
package. and then there were dependency conflicts. yay.
mux + identify are good examples of what i mean.
2015-01-02 08:46:43 -08:00
Brian Tiger Chow
27dc9594ba refactor(bitswap) bitswap.Network now abstracts ipfs.Network + ipfs.Routing
@jbenet @whyrusleeping

the next commit will change bitswap.Network.FindProviders to only deal
with IDs
2014-12-23 09:19:21 -08:00
Juan Batiz-Benet
64a4abcd6c listen addresses: add Interface addresses
network.ListenAddresses() are general.
Interface addresses are specific.
2014-12-23 09:01:54 -08:00
Juan Batiz-Benet
a10fb7aa4b core: set local listening addresses 2014-12-23 08:44:59 -08:00
Juan Batiz-Benet
c84a714b16 peer change: peer.Peer -> peer.ID
this is a major refactor of the entire codebase
it changes the monolithic peer.Peer into using
a peer.ID and a peer.Peerstore.

Other changes:
- removed handshake3.
-	testutil vastly simplified peer
-	secio bugfix + debugging logs
-	testutil: RandKeyPair
-	backpressure bugfix: w.o.w.
-	peer: added hex enc/dec
-	peer: added a PeerInfo struct
  PeerInfo is a small struct used to pass around a peer with
 	a set of addresses and keys. This is not meant to be a
 	complete view of the system, but rather to model updates to
 	the peerstore. It is used by things like the routing system.
-	updated peer/queue + peerset
-	latency metrics
-	testutil: use crand for PeerID gen
 	RandPeerID generates random "valid" peer IDs. it does not
 	NEED to generate keys because it is as if we lost the key
 	right away. fine to read some randomness and hash it. to
 	generate proper keys and an ID, use:
 	  sk, pk, _ := testutil.RandKeyPair()
 	  id, _ := peer.IDFromPublicKey(pk)
 	Also added RandPeerIDFatal helper
- removed old spipe
- updated seccat
- core: cleanup initIdentity
- removed old getFromPeerList
2014-12-23 08:33:32 -08:00
Juan Batiz-Benet
41751b4938 Integrated new network into ipfs 2014-12-16 14:47:29 -08:00
Juan Batiz-Benet
b039ebceb6 core: arrangement change in struct 2014-12-16 14:47:29 -08:00
Brian Tiger Chow
8e0c8a7a7e refactor(mdag, bserv, bs) mocks, etc.
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-13 05:17:16 -08:00
Brian Tiger Chow
c2c95d1105 start threading context through the system
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-09 07:11:48 -08:00
Brian Tiger Chow
df4b54524c refactor(bootstrap) reduce interface
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 16:29:29 -08:00
Brian Tiger Chow
175da4f584 feat(core) supervise bootstrap connections
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 16:29:20 -08:00
Brian Tiger Chow
b799ddef58 refactor(dht) remove extraneous return value
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 16:28:22 -08:00
Brian Tiger Chow
6c419e6af4 style(core) signature
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 15:07:33 -08:00
Brian Tiger Chow
74eb03231d fix(core, peer) helpers to testutil, err handling
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 14:32:52 -08:00
Brian Tiger Chow
73a89e161d refactor(peerstore) s/Get/FindOrCreate
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 02:10:42 -08:00
Brian Tiger Chow
3f63e50c54 fix(peer): use error-checking multiaddr method
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-08 01:10:25 -08:00
Brian Tiger Chow
9895af2dff feat(core) using WriteCached, cache Puts for exchange and blockservice
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-05 23:31:01 -08:00
Brian Tiger Chow
670d0244b4 feat(bitswap) make offline exchange query datastore
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-05 23:31:01 -08:00
Jeromy
f0a4fdad59 some bitswap cleanup 2014-12-05 20:53:32 +00:00
Jeromy
4cc1780705 fix issues in merkledag 2014-12-05 20:53:31 +00:00
Brian Tiger Chow
d0304def6b refactor(blockstore, blockservice) use Blockstore and offline.Exchange
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-05 20:53:24 +00:00
Brian Tiger Chow
918c8e274e refactor(blockstore) mv under blocks/
@jbenet @whyrusleeping

the pyramids were built one brick at a time

addresses: https://github.com/jbenet/go-ipfs/issues/370

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-05 20:53:23 +00:00
Brian Tiger Chow
81a3ba0677 tests(bitswap) share constructor between tests
@whyrusleeping i hope this makes it a bit easier to work with tests

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-12-05 20:53:22 +00:00
Brian Tiger Chow
f3b71cfbfd log(core) Event: bootstrap
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-11-25 06:16:40 -08:00
Brian Tiger Chow
2497c93897 log(core) bootstrapping error -> critical
License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-11-25 06:12:35 -08:00
Juan Batiz-Benet
1a5cb300cb config: swarm is list of addrs 2014-11-20 09:14:48 -08:00
Juan Batiz-Benet
f47b4f1799 Merge pull request #255 from jbenet/id-cmd
basic ID cmd
2014-11-17 23:23:06 -08:00
Juan Batiz-Benet
d93e49e06e fix node context (tests pass) 2014-11-17 22:50:01 -08:00
Brian Tiger Chow
24f0fa0fde delegate teardown
this is silly but whatever

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-11-17 22:36:19 -08:00
Brian Tiger Chow
ef65bb1ce3 revert to debug error
@jbenet

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-11-17 22:36:18 -08:00
Brian Tiger Chow
2bbfe4d56f debug(core, datastore, daemon) wrap errors
@jbenet @whyrusleeping @mappum

very helpful for tracking down errors. the stack traces are only
shown when debug mode is visible. They function best when caught at the
source.

I propose we use this errors package as a drop-in replacement for
fmt.Errorf and errors.New in all of our code, and use errors.Wrap for
external errors as they emerge from others' libraries.

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Signed-off-by: Brian Tiger Chow <brian.holderchow@gmail.com>
2014-11-17 22:36:18 -08:00
Brian Tiger Chow
bacf3ecc6a feat(util) add datastore Closer Wrapper
@jbenet

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
2014-11-17 22:36:17 -08:00
Brian Tiger Chow
f26388e0e5 fix(core) tear-down leveldb
@jbenet @whyrusleeping @mappum

If we permit initialization in `ipfs daemon`, then we must ensure that
the node instantiated in `ipfs init` (to create the welcome file) shuts
down and releases resources.

Kept running into "resource temporarily unavailable". Discovered that it
was our cousins Jeff and Sanjay over at LevelDB Ave.

go-datastore doesn't expose Close() so I extended the TsDs interface and
submitted a patch.

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Signed-off-by: Brian Tiger Chow <brian.holderchow@gmail.com>
2014-11-17 00:44:18 -08:00
Jeromy
9f4127aefa fix variable naming 2014-11-16 17:12:35 -08:00
Jeromy
0de12b5d36 implement ipfs id in the new commands library 2014-11-16 16:46:06 -08:00
Brian Tiger Chow
a11c59dcac feat(peer) add Type (Unspecified, Local, Remote) 2014-11-16 07:00:58 -08:00
Brian Tiger Chow
05346dd927 misc(core/identity) more specific function argument
to aid in testing
2014-11-16 07:00:28 -08:00
Brian Tiger Chow
1ed0850ce2 style(core) peer -> self 2014-11-16 07:00:28 -08:00
Jeromy
f45d575a96 address comments from PR 2014-11-16 02:45:20 -08:00
Jeromy
f21ec1923a verify ipns records 2014-11-16 02:45:19 -08:00
Juan Batiz-Benet
99f2378bac mount: fixed mount init + teardown
This commit adds a Mount abstraction (which is really just
a wrapped context closer). It makes sure to bind the mount
to the fate of the Node (i.e. close it if the node ends).
This fixes #350
2014-11-16 01:42:42 -08:00
Brian Tiger Chow
0b42d77e13 refactor(core, bitswap) split bitswap init into two steps
@jbenet
2014-11-15 02:10:53 -08:00
Brian Tiger Chow
6d89094d41 rename -> OnlineMode()
because this method doesn't check actual network status
2014-11-14 03:17:29 -08:00
Brian Tiger Chow
772f657fcd add online method to node 2014-11-14 03:17:29 -08:00
Juan Batiz-Benet
0135e3ebbe swarm + net: add explicit listen addresses 2014-11-05 04:00:49 -08:00
Juan Batiz-Benet
f0d823c2db fix tests (circular import) 2014-10-30 01:17:26 -07:00
Brian Tiger Chow
79866d3378 hotfix(core) assign node.Resolver = path.Resolver
discovered by @mappum and applied at 414e20b71e

fixing here to address #233

https://github.com/jbenet/go-ipfs/issues/233
2014-10-29 06:58:35 -07:00
Juan Batiz-Benet
d79ebe68d2 dht ctxcloserify 2014-10-25 21:33:59 -07:00
Juan Batiz-Benet
4584bc8d18 clean up core initialization
- less floating variables
2014-10-25 21:33:59 -07:00
Juan Batiz-Benet
8cf22c062f core is now ctxcloser 2014-10-25 21:33:10 -07:00
Juan Batiz-Benet
f2b8803a57 net/service now uses ctxcloser 2014-10-25 21:33:10 -07:00
Emery Hemingway
056699cebe convert DAGService to an interface 2014-10-25 22:15:19 -04:00
Juan Batiz-Benet
184c25430b go-vet friendly codebase
- distinguish log.Error and log.Errorf functions
- Initialize structs with field names
- A bit of unreachable code (defers)
2014-10-25 03:46:39 -07:00
Jeromy
31b0ff0307 add testing for pins 2014-10-22 00:28:41 -07:00
Juan Batiz-Benet
f7c1ed39e0 renamed datastore.go -> go-datastore 2014-10-21 15:10:58 -07:00
Juan Batiz-Benet
ac62d13e42 peerstore Put -> Add
Changed lots of peer use, and changed the peerstore to ensure
there is only ever one peer in use.

Fixed #174
2014-10-20 06:37:12 -07:00
Juan Batiz-Benet
9ca87fbb93 peer.Peer is now an interface
![](http://m.memegen.com/77n7dk.jpg)
2014-10-20 03:26:46 -07:00
Juan Batiz-Benet
b1d11ccfcb peerstore constructs peers
Now, all peers should be retrieved from the Peerstore, which will
construct the peers accordingly. This ensures there's only one peer
object per peer (opposite would be bad: things get out sync)

cc @whyrusleeping
2014-10-20 00:44:44 -07:00
Jeromy
60cd0f1cf0 some dht cleanup, and make DHTs take a master context 2014-10-18 04:28:26 -07:00
Jeromy
b2bd6848a8 fix core NewNode not setting network field, and added new json serializer for diagnostics 2014-10-18 04:28:25 -07:00
Juan Batiz-Benet
338b037238 clean up and add inet.Network to bitswap
new Service interface
2014-10-10 20:43:04 -07:00
Jeromy
3732244837 actually start the diagnostics service 2014-10-10 13:18:20 -07:00
Jeromy
280c7e7e06 implement diagnostics service 2014-10-10 13:18:19 -07:00
Juan Batiz-Benet
972c0f7b4b u.DOut -> log.Debug
and other logging switches. I kept the u.PErr and u.POut in cli
commands, as those do need to write raw output directly.
2014-10-09 04:50:22 -07:00
Juan Batiz-Benet
2944360f5c New NameSystem interface
type NameSystem interface {
      Resolver
      Publisher
    }

should say it all.

cc @whyrusleeping
2014-10-08 04:14:52 -07:00
Juan Batiz-Benet
910a76e220 updated multiaddr use across codebase 2014-10-06 04:13:43 -07:00
Juan Batiz-Benet
0c8ae7674e loggers: set level 2014-10-04 03:53:21 -07:00
Juan Batiz-Benet
7e1cd59259 initialize loggers at ERROR 2014-10-04 03:36:30 -07:00
Juan Batiz-Benet
2ce9415c69 + fs ds + thread safe 2014-10-03 14:45:21 -07:00
Juan Batiz-Benet
88d804e32a added core logging 2014-10-03 14:45:21 -07:00
Juan Batiz-Benet
ba510cbd6d IpnsPublicher -> Publisher interface 2014-10-01 01:36:21 -07:00
Juan Batiz-Benet
728f17d3c9 cmd/ipfs/pin.go now uses MakeCommand
+ added recursive pinning func
2014-10-01 01:17:27 -07:00
Jeromy
7f5e13716d writes to ipns work if the top object is the written file (no directories yet!) 2014-10-01 00:39:57 -07:00
Jeromy
2aa2b8c6c7 add routing resolver test 2014-10-01 00:26:59 -07:00
Jeromy
4c0f18cbbd implement ipns publisher code 2014-10-01 00:26:59 -07:00
Jeromy
8ddfb57c59 some bugfixes and added logging 2014-10-01 00:26:59 -07:00
Jeromy
b5fd9492d7 fixes to make interface more usable 2014-10-01 00:25:52 -07:00
Jeromy
235a767492 implement namesys resolvers (thanks to bren2010 for dns and proquint) 2014-10-01 00:16:05 -07:00
Juan Batiz-Benet
c7af4a6fa2 Bugfix: !online -> online
Caused panic.
2014-09-30 11:34:28 -07:00
Juan Batiz-Benet
c054619827 do init id offline, only dont parse keys
(test was failing)
2014-09-30 03:31:24 -07:00
Brian Tiger Chow
508a5b7a94 amendment to core context + cancels 2014-09-30 03:22:30 -07:00
Juan Batiz-Benet
4b5e0291f8 core context + cancels
Erroring out in core setup should cancel the context
to ensure subsystems are shut down. This has to happen
all over the place we use contexts.

@perfmode @whyrusleeping
2014-09-30 03:22:30 -07:00
Juan Batiz-Benet
f2db4b77ac don't load identity in offline mode (temp)
**For now**, we don't need to load/parse the private key
(which causes a signficant delay in commands) when doing
things entirely offline. This may change, and in that case
the private key should be loaded on demand.
2014-09-30 03:22:29 -07:00
Juan Batiz-Benet
53f0b117f5 update net with peerstore 2014-09-26 02:41:46 -07:00
Juan Batiz-Benet
303ebd894d config: changed language from Peers to Bootstrap 2014-09-24 05:31:25 -07:00
Juan Batiz-Benet
193aebc4c0 config: rename addresses
WARNING: change breaks old configs.
@whyrusleeping @perfmode

This commit changes the way addresses are stored in config files.
It lumps Identity.Address and RPCAddress into Addresses. This
commit also fixes several golint issues.
2014-09-24 05:28:35 -07:00
Brian Tiger Chow
9d7ae40003 feat(bitswap) expose ability to toggle "niceness"
true -> always send to peer

false -> use ledger-based strategy described in IPFS paper draft 3
2014-09-22 04:06:19 -07:00