Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
54142b21
提交
54142b21
authored
9月 28, 2014
作者:
Jeromy
提交者:
Juan Batiz-Benet
10月 01, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update logging in multiple packages
上级
9b0c578f
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
85 行增加
和
45 行删除
+85
-45
blockservice.go
blockservice/blockservice.go
+9
-6
ipns_unix.go
fuse/ipns/ipns_unix.go
+46
-10
readonly_unix.go
fuse/readonly/readonly_unix.go
+9
-8
dht.go
routing/dht/dht.go
+15
-15
routing.go
routing/dht/routing.go
+5
-5
util.go
util/util.go
+1
-1
没有找到文件。
blockservice/blockservice.go
浏览文件 @
54142b21
...
...
@@ -7,12 +7,15 @@ import (
context
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
ds
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
mh
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
"github.com/op/go-logging"
blocks
"github.com/jbenet/go-ipfs/blocks"
exchange
"github.com/jbenet/go-ipfs/exchange"
u
"github.com/jbenet/go-ipfs/util"
)
var
log
=
logging
.
MustGetLogger
(
"blockservice"
)
// BlockService is a block datastore.
// It uses an internal `datastore.Datastore` instance to store values.
type
BlockService
struct
{
...
...
@@ -26,7 +29,7 @@ func NewBlockService(d ds.Datastore, rem exchange.Interface) (*BlockService, err
return
nil
,
fmt
.
Errorf
(
"BlockService requires valid datastore"
)
}
if
rem
==
nil
{
u
.
DErr
(
"Caution: blockservice running in local (offline) mode.
\n
"
)
log
.
Warning
(
"blockservice running in local (offline) mode.
"
)
}
return
&
BlockService
{
Datastore
:
d
,
Remote
:
rem
},
nil
}
...
...
@@ -35,7 +38,7 @@ func NewBlockService(d ds.Datastore, rem exchange.Interface) (*BlockService, err
func
(
s
*
BlockService
)
AddBlock
(
b
*
blocks
.
Block
)
(
u
.
Key
,
error
)
{
k
:=
b
.
Key
()
dsk
:=
ds
.
NewKey
(
string
(
k
))
u
.
DOut
(
"storing [%s] in datastore
\n
"
,
k
.
Pretty
())
log
.
Debug
(
"storing [%s] in datastore
"
,
k
.
Pretty
())
// TODO(brian): define a block datastore with a Put method which accepts a
// block parameter
err
:=
s
.
Datastore
.
Put
(
dsk
,
b
.
Data
)
...
...
@@ -52,11 +55,11 @@ func (s *BlockService) AddBlock(b *blocks.Block) (u.Key, error) {
// GetBlock retrieves a particular block from the service,
// Getting it from the datastore using the key (hash).
func
(
s
*
BlockService
)
GetBlock
(
k
u
.
Key
)
(
*
blocks
.
Block
,
error
)
{
u
.
DOut
(
"BlockService GetBlock: '%s'
\n
"
,
k
.
Pretty
())
log
.
Debug
(
"BlockService GetBlock: '%s'
"
,
k
.
Pretty
())
dsk
:=
ds
.
NewKey
(
string
(
k
))
datai
,
err
:=
s
.
Datastore
.
Get
(
dsk
)
if
err
==
nil
{
u
.
DOut
(
"Blockservice: Got data in datastore.
\n
"
)
log
.
Debug
(
"Blockservice: Got data in datastore.
"
)
bdata
,
ok
:=
datai
.
([]
byte
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"data associated with %s is not a []byte"
,
k
)
...
...
@@ -66,7 +69,7 @@ func (s *BlockService) GetBlock(k u.Key) (*blocks.Block, error) {
Data
:
bdata
,
},
nil
}
else
if
err
==
ds
.
ErrNotFound
&&
s
.
Remote
!=
nil
{
u
.
DOut
(
"Blockservice: Searching bitswap.
\n
"
)
log
.
Debug
(
"Blockservice: Searching bitswap.
"
)
ctx
,
_
:=
context
.
WithTimeout
(
context
.
TODO
(),
5
*
time
.
Second
)
blk
,
err
:=
s
.
Remote
.
Block
(
ctx
,
k
)
if
err
!=
nil
{
...
...
@@ -74,7 +77,7 @@ func (s *BlockService) GetBlock(k u.Key) (*blocks.Block, error) {
}
return
blk
,
nil
}
else
{
u
.
DOut
(
"Blockservice GetBlock: Not found.
\n
"
)
log
.
Debug
(
"Blockservice GetBlock: Not found.
"
)
return
nil
,
u
.
ErrNotFound
}
}
fuse/ipns/ipns_unix.go
浏览文件 @
54142b21
...
...
@@ -79,7 +79,9 @@ func CreateRoot(n *core.IpfsNode, keys []ci.PrivKey, ipfsroot string) (*Root, er
pointsTo
,
err
:=
n
.
Namesys
.
Resolve
(
name
)
if
err
!=
nil
{
log
.
Warning
(
"Could not resolve value for local ipns entry"
)
log
.
Warning
(
"Could not resolve value for local ipns entry, providing empty dir"
)
nd
.
Nd
=
&
mdag
.
Node
{
Data
:
mdag
.
FolderPBData
()}
root
.
LocalDirs
[
name
]
=
nd
continue
}
...
...
@@ -147,16 +149,16 @@ func (s *Root) Lookup(name string, intr fs.Intr) (fs.Node, fuse.Error) {
log
.
Debug
(
"ipns: Falling back to resolution for [%s]."
,
name
)
resolved
,
err
:=
s
.
Ipfs
.
Namesys
.
Resolve
(
name
)
if
err
!=
nil
{
log
.
Error
(
"ipns: namesys resolve error: %s"
,
err
)
log
.
Warning
(
"ipns: namesys resolve error: %s"
,
err
)
return
nil
,
fuse
.
ENOENT
}
return
&
Link
{
s
.
IpfsRoot
+
"/"
+
u
.
Key
(
resolved
)
.
Pretty
()
},
nil
return
&
Link
{
s
.
IpfsRoot
+
"/"
+
resolved
},
nil
}
// ReadDir reads a particular directory. Disallowed for root.
func
(
r
*
Root
)
ReadDir
(
intr
fs
.
Intr
)
([]
fuse
.
Dirent
,
fuse
.
Error
)
{
u
.
DOut
(
"Read Root.
\n
"
)
log
.
Debug
(
"Read Root.
"
)
listing
:=
[]
fuse
.
Dirent
{
fuse
.
Dirent
{
Name
:
"local"
,
...
...
@@ -255,7 +257,7 @@ func (n *Node) makeChild(name string, node *mdag.Node) *Node {
// ReadDir reads the link structure as directory entries
func
(
s
*
Node
)
ReadDir
(
intr
fs
.
Intr
)
([]
fuse
.
Dirent
,
fuse
.
Error
)
{
u
.
DOut
(
"Node ReadDir
\n
"
)
log
.
Debug
(
"Node ReadDir
"
)
entries
:=
make
([]
fuse
.
Dirent
,
len
(
s
.
Nd
.
Links
))
for
i
,
link
:=
range
s
.
Nd
.
Links
{
n
:=
link
.
Name
...
...
@@ -370,10 +372,8 @@ func (n *Node) Fsync(req *fuse.FsyncRequest, intr fs.Intr) fuse.Error {
func
(
n
*
Node
)
Mkdir
(
req
*
fuse
.
MkdirRequest
,
intr
fs
.
Intr
)
(
fs
.
Node
,
fuse
.
Error
)
{
log
.
Debug
(
"Got mkdir request!"
)
dagnd
:=
new
(
mdag
.
Node
)
dagnd
.
Data
=
mdag
.
FolderPBData
()
dagnd
:=
&
mdag
.
Node
{
Data
:
mdag
.
FolderPBData
()}
n
.
Nd
.
AddNodeLink
(
req
.
Name
,
dagnd
)
n
.
changed
=
true
child
:=
&
Node
{
Ipfs
:
n
.
Ipfs
,
...
...
@@ -386,6 +386,7 @@ func (n *Node) Mkdir(req *fuse.MkdirRequest, intr fs.Intr) (fs.Node, fuse.Error)
child
.
nsRoot
=
n
.
nsRoot
}
n
.
changed
=
true
n
.
updateTree
()
return
child
,
nil
...
...
@@ -404,8 +405,9 @@ func (n *Node) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, intr fs.Intr
func
(
n
*
Node
)
Create
(
req
*
fuse
.
CreateRequest
,
resp
*
fuse
.
CreateResponse
,
intr
fs
.
Intr
)
(
fs
.
Node
,
fs
.
Handle
,
fuse
.
Error
)
{
log
.
Debug
(
"Got create request: %s"
,
req
.
Name
)
nd
:=
new
(
mdag
.
Node
)
nd
.
Data
=
mdag
.
FilePBData
(
nil
)
// New 'empty' file
nd
:=
&
mdag
.
Node
{
Data
:
mdag
.
FilePBData
(
nil
)}
child
:=
n
.
makeChild
(
req
.
Name
,
nd
)
err
:=
n
.
Nd
.
AddNodeLink
(
req
.
Name
,
nd
)
...
...
@@ -545,3 +547,37 @@ func (l *Link) Readlink(req *fuse.ReadlinkRequest, intr fs.Intr) (string, fuse.E
log
.
Debug
(
"ReadLink: %s"
,
l
.
Target
)
return
l
.
Target
,
nil
}
type
Republisher
struct
{
Timeout
time
.
Duration
Publish
chan
struct
{}
node
*
Node
}
func
NewRepublisher
(
n
*
Node
,
tout
time
.
Duration
)
*
Republisher
{
return
&
Republisher
{
Timeout
:
tout
,
Publish
:
make
(
chan
struct
{}),
node
:
n
,
}
}
func
(
np
*
Republisher
)
Run
()
{
for
_
:=
range
np
.
Publish
{
timer
:=
time
.
After
(
np
.
Timeout
)
for
{
select
{
case
<-
timer
:
//Do the publish!
err
:=
np
.
node
.
updateTree
()
if
err
!=
nil
{
log
.
Critical
(
"updateTree error: %s"
,
err
)
}
goto
done
case
<-
np
.
Publish
:
timer
=
time
.
After
(
np
.
Timeout
)
}
}
done
:
}
}
fuse/readonly/readonly_unix.go
浏览文件 @
54142b21
...
...
@@ -21,8 +21,11 @@ import (
core
"github.com/jbenet/go-ipfs/core"
mdag
"github.com/jbenet/go-ipfs/merkledag"
u
"github.com/jbenet/go-ipfs/util"
"github.com/op/go-logging"
)
var
log
=
logging
.
MustGetLogger
(
"ipfs"
)
// FileSystem is the readonly Ipfs Fuse Filesystem.
type
FileSystem
struct
{
Ipfs
*
core
.
IpfsNode
...
...
@@ -50,7 +53,7 @@ func (*Root) Attr() fuse.Attr {
// Lookup performs a lookup under this node.
func
(
s
*
Root
)
Lookup
(
name
string
,
intr
fs
.
Intr
)
(
fs
.
Node
,
fuse
.
Error
)
{
u
.
DOut
(
"Root Lookup: '%s'
\n
"
,
name
)
log
.
Debug
(
"Root Lookup: '%s'
"
,
name
)
switch
name
{
case
"mach_kernel"
,
".hidden"
,
"._."
:
// Just quiet some log noise on OS X.
...
...
@@ -68,7 +71,7 @@ func (s *Root) Lookup(name string, intr fs.Intr) (fs.Node, fuse.Error) {
// ReadDir reads a particular directory. Disallowed for root.
func
(
*
Root
)
ReadDir
(
intr
fs
.
Intr
)
([]
fuse
.
Dirent
,
fuse
.
Error
)
{
u
.
DOut
(
"Read Root.
\n
"
)
log
.
Debug
(
"Read Root.
"
)
return
nil
,
fuse
.
EPERM
}
...
...
@@ -87,16 +90,14 @@ func (s *Node) loadData() error {
// Attr returns the attributes of a given node.
func
(
s
*
Node
)
Attr
()
fuse
.
Attr
{
u
.
DOut
(
"Node attr.
\n
"
)
log
.
Debug
(
"Node attr.
"
)
if
s
.
cached
==
nil
{
s
.
loadData
()
}
switch
s
.
cached
.
GetType
()
{
case
mdag
.
PBData_Directory
:
u
.
DOut
(
"this is a directory.
\n
"
)
return
fuse
.
Attr
{
Mode
:
os
.
ModeDir
|
0555
}
case
mdag
.
PBData_File
,
mdag
.
PBData_Raw
:
u
.
DOut
(
"this is a file.
\n
"
)
size
,
_
:=
s
.
Nd
.
Size
()
return
fuse
.
Attr
{
Mode
:
0444
,
...
...
@@ -111,7 +112,7 @@ func (s *Node) Attr() fuse.Attr {
// Lookup performs a lookup under this node.
func
(
s
*
Node
)
Lookup
(
name
string
,
intr
fs
.
Intr
)
(
fs
.
Node
,
fuse
.
Error
)
{
u
.
DOut
(
"Lookup '%s'
\n
"
,
name
)
log
.
Debug
(
"Lookup '%s'
"
,
name
)
nd
,
err
:=
s
.
Ipfs
.
Resolver
.
ResolveLinks
(
s
.
Nd
,
[]
string
{
name
})
if
err
!=
nil
{
// todo: make this error more versatile.
...
...
@@ -123,7 +124,7 @@ func (s *Node) Lookup(name string, intr fs.Intr) (fs.Node, fuse.Error) {
// ReadDir reads the link structure as directory entries
func
(
s
*
Node
)
ReadDir
(
intr
fs
.
Intr
)
([]
fuse
.
Dirent
,
fuse
.
Error
)
{
u
.
DOut
(
"Node ReadDir
\n
"
)
log
.
Debug
(
"Node ReadDir
"
)
entries
:=
make
([]
fuse
.
Dirent
,
len
(
s
.
Nd
.
Links
))
for
i
,
link
:=
range
s
.
Nd
.
Links
{
n
:=
link
.
Name
...
...
@@ -193,7 +194,7 @@ func Mount(ipfs *core.IpfsNode, fpath string) error {
// Unmount attempts to unmount the provided FUSE mount point, forcibly
// if necessary.
func
Unmount
(
point
string
)
error
{
fmt
.
Printf
(
"Unmounting %s...
\n
"
,
point
)
log
.
Info
(
"Unmounting %s...
"
,
point
)
var
cmd
*
exec
.
Cmd
switch
runtime
.
GOOS
{
...
...
routing/dht/dht.go
浏览文件 @
54142b21
...
...
@@ -77,7 +77,7 @@ func NewDHT(p *peer.Peer, ps peer.Peerstore, net inet.Network, sender inet.Sende
// Connect to a new peer at the given address, ping and add to the routing table
func
(
dht
*
IpfsDHT
)
Connect
(
ctx
context
.
Context
,
npeer
*
peer
.
Peer
)
(
*
peer
.
Peer
,
error
)
{
u
.
DOut
(
"Connect to new peer: %s
\n
"
,
npeer
.
ID
.
Pretty
())
log
.
Debug
(
"Connect to new peer: %s
\n
"
,
npeer
.
ID
.
Pretty
())
// TODO(jbenet,whyrusleeping)
//
...
...
@@ -132,7 +132,7 @@ func (dht *IpfsDHT) HandleMessage(ctx context.Context, mes msg.NetMessage) msg.N
dht
.
Update
(
mPeer
)
// Print out diagnostic
u
.
DOut
(
"[peer: %s] Got message type: '%s' [from = %s]
\n
"
,
log
.
Debug
(
"[peer: %s] Got message type: '%s' [from = %s]
\n
"
,
dht
.
self
.
ID
.
Pretty
(),
Message_MessageType_name
[
int32
(
pmes
.
GetType
())],
mPeer
.
ID
.
Pretty
())
...
...
@@ -177,7 +177,7 @@ func (dht *IpfsDHT) sendRequest(ctx context.Context, p *peer.Peer, pmes *Message
start
:=
time
.
Now
()
// Print out diagnostic
u
.
DOut
(
"[peer: %s] Sent message type: '%s' [to = %s]
\n
"
,
log
.
Debug
(
"[peer: %s] Sent message type: '%s' [to = %s]
\n
"
,
dht
.
self
.
ID
.
Pretty
(),
Message_MessageType_name
[
int32
(
pmes
.
GetType
())],
p
.
ID
.
Pretty
())
...
...
@@ -224,7 +224,7 @@ func (dht *IpfsDHT) putProvider(ctx context.Context, p *peer.Peer, key string) e
return
err
}
u
.
DOut
(
"[%s] putProvider: %s for %s
\n
"
,
dht
.
self
.
ID
.
Pretty
(),
p
.
ID
.
Pretty
(),
key
)
log
.
Debug
(
"[%s] putProvider: %s for %s
"
,
dht
.
self
.
ID
.
Pretty
(),
p
.
ID
.
Pretty
(),
key
)
if
*
rpmes
.
Key
!=
*
pmes
.
Key
{
return
errors
.
New
(
"provider not added correctly"
)
}
...
...
@@ -240,10 +240,10 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
return
nil
,
nil
,
err
}
u
.
DOut
(
"pmes.GetValue() %v
\n
"
,
pmes
.
GetValue
())
log
.
Debug
(
"pmes.GetValue() %v
"
,
pmes
.
GetValue
())
if
value
:=
pmes
.
GetValue
();
value
!=
nil
{
// Success! We were given the value
u
.
DOut
(
"getValueOrPeers: got value
\n
"
)
log
.
Debug
(
"getValueOrPeers: got value
"
)
return
value
,
nil
,
nil
}
...
...
@@ -253,7 +253,7 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
if
err
!=
nil
{
return
nil
,
nil
,
err
}
u
.
DOut
(
"getValueOrPeers: get from providers
\n
"
)
log
.
Debug
(
"getValueOrPeers: get from providers
"
)
return
val
,
nil
,
nil
}
...
...
@@ -266,7 +266,7 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
addr
,
err
:=
ma
.
NewMultiaddr
(
pb
.
GetAddr
())
if
err
!=
nil
{
u
.
PErr
(
"%v
\n
"
,
err
.
Error
())
log
.
Error
(
"%v
"
,
err
.
Error
())
continue
}
...
...
@@ -281,11 +281,11 @@ func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
}
if
len
(
peers
)
>
0
{
u
.
DOut
(
"getValueOrPeers: peers
\n
"
)
u
.
DOut
(
"getValueOrPeers: peers"
)
return
nil
,
peers
,
nil
}
u
.
DOut
(
"getValueOrPeers: u.ErrNotFound
\n
"
)
log
.
Warning
(
"getValueOrPeers: u.ErrNotFound
"
)
return
nil
,
nil
,
u
.
ErrNotFound
}
...
...
@@ -307,13 +307,13 @@ func (dht *IpfsDHT) getFromPeerList(ctx context.Context, key u.Key,
for
_
,
pinfo
:=
range
peerlist
{
p
,
err
:=
dht
.
ensureConnectedToPeer
(
pinfo
)
if
err
!=
nil
{
u
.
DErr
(
"getFromPeers error: %s
\n
"
,
err
)
log
.
Error
(
"getFromPeers error: %s
"
,
err
)
continue
}
pmes
,
err
:=
dht
.
getValueSingle
(
ctx
,
p
,
key
,
level
)
if
err
!=
nil
{
u
.
DEr
r
(
"getFromPeers error: %s
\n
"
,
err
)
log
.
Erro
r
(
"getFromPeers error: %s
\n
"
,
err
)
continue
}
...
...
@@ -348,7 +348,7 @@ func (dht *IpfsDHT) putLocal(key u.Key, value []byte) error {
// Update signals to all routingTables to Update their last-seen status
// on the given peer.
func
(
dht
*
IpfsDHT
)
Update
(
p
*
peer
.
Peer
)
{
u
.
DOut
(
"updating peer: [%s] latency = %f
\n
"
,
p
.
ID
.
Pretty
(),
p
.
GetLatency
()
.
Seconds
())
log
.
Debug
(
"updating peer: [%s] latency = %f
\n
"
,
p
.
ID
.
Pretty
(),
p
.
GetLatency
()
.
Seconds
())
removedCount
:=
0
for
_
,
route
:=
range
dht
.
routingTables
{
removed
:=
route
.
Update
(
p
)
...
...
@@ -404,7 +404,7 @@ func (dht *IpfsDHT) addProviders(key u.Key, peers []*Message_Peer) []*peer.Peer
continue
}
u
.
DOut
(
"[%s] adding provider: %s for %s"
,
dht
.
self
.
ID
.
Pretty
(),
p
,
key
)
log
.
Debug
(
"[%s] adding provider: %s for %s"
,
dht
.
self
.
ID
.
Pretty
(),
p
,
key
)
// Dont add outselves to the list
if
p
.
ID
.
Equal
(
dht
.
self
.
ID
)
{
...
...
@@ -439,7 +439,7 @@ func (dht *IpfsDHT) betterPeerToQuery(pmes *Message) *peer.Peer {
// == to self? nil
if
closer
.
ID
.
Equal
(
dht
.
self
.
ID
)
{
u
.
DOut
(
"Attempted to return self! this shouldnt happen...
\n
"
)
log
.
Error
(
"Attempted to return self! this shouldnt happen...
"
)
return
nil
}
...
...
routing/dht/routing.go
浏览文件 @
54142b21
...
...
@@ -86,7 +86,7 @@ func (dht *IpfsDHT) GetValue(ctx context.Context, key u.Key) ([]byte, error) {
return
nil
,
err
}
u
.
DOut
(
"[%s] GetValue %v %v
\n
"
,
dht
.
self
.
ID
.
Pretty
()
,
key
,
result
.
value
)
log
.
Debug
(
"GetValue %v %v"
,
key
,
result
.
value
)
if
result
.
value
==
nil
{
return
nil
,
u
.
ErrNotFound
}
...
...
@@ -189,7 +189,7 @@ func (dht *IpfsDHT) addPeerListAsync(k u.Key, peers []*Message_Peer, ps *peerSet
// FindProviders searches for peers who can provide the value for given key.
func
(
dht
*
IpfsDHT
)
FindProviders
(
ctx
context
.
Context
,
key
u
.
Key
)
([]
*
peer
.
Peer
,
error
)
{
// get closest peer
u
.
DOut
(
"Find providers for: '%s'
\n
"
,
key
.
Pretty
())
log
.
Debug
(
"Find providers for: '%s'
"
,
key
.
Pretty
())
p
:=
dht
.
routingTables
[
0
]
.
NearestPeer
(
kb
.
ConvertKey
(
key
))
if
p
==
nil
{
return
nil
,
nil
...
...
@@ -333,17 +333,17 @@ func (dht *IpfsDHT) findPeerMultiple(ctx context.Context, id peer.ID) (*peer.Pee
// Ping a peer, log the time it took
func
(
dht
*
IpfsDHT
)
Ping
(
ctx
context
.
Context
,
p
*
peer
.
Peer
)
error
{
// Thoughts: maybe this should accept an ID and do a peer lookup?
u
.
DOut
(
"[%s] ping %s start
\n
"
,
dht
.
self
.
ID
.
Pretty
()
,
p
.
ID
.
Pretty
())
log
.
Info
(
"ping %s start"
,
p
.
ID
.
Pretty
())
pmes
:=
newMessage
(
Message_PING
,
""
,
0
)
_
,
err
:=
dht
.
sendRequest
(
ctx
,
p
,
pmes
)
u
.
DOut
(
"[%s] ping %s end (err = %s)
\n
"
,
dht
.
self
.
ID
.
Pretty
()
,
p
.
ID
.
Pretty
(),
err
)
log
.
Info
(
"ping %s end (err = %s)"
,
p
.
ID
.
Pretty
(),
err
)
return
err
}
func
(
dht
*
IpfsDHT
)
getDiagnostic
(
ctx
context
.
Context
)
([]
*
diagInfo
,
error
)
{
u
.
DOut
(
"Begin Diagnostic"
)
log
.
Info
(
"Begin Diagnostic"
)
peers
:=
dht
.
routingTables
[
0
]
.
NearestPeers
(
kb
.
ConvertPeerID
(
dht
.
self
.
ID
),
10
)
var
out
[]
*
diagInfo
...
...
util/util.go
浏览文件 @
54142b21
...
...
@@ -14,7 +14,7 @@ import (
"github.com/op/go-logging"
)
var
format
=
"%{color}%{time} %{shortfile} %{level}: %{color:reset}%{message}"
var
format
=
"%{color}%{time
:01-02 15:04:05.9999
} %{shortfile} %{level}: %{color:reset}%{message}"
func
init
()
{
backend
:=
logging
.
NewLogBackend
(
os
.
Stderr
,
""
,
0
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论