本文整理汇总了Golang中github.com/spance/deblocus/golang/glog.V函数的典型用法代码示例。如果您正苦于以下问题:Golang V函数的具体用法?Golang V怎么用?Golang V使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了V函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: connectToDest
func (p *multiplexer) connectToDest(frm *frame, key string, tun *Conn) {
defer func() {
ex.CatchException(recover())
}()
var (
dstConn net.Conn
err error
target = string(frm.data)
)
dstConn, err = net.DialTimeout("tcp", target, GENERAL_SO_TIMEOUT)
frm.length = 0
if err != nil {
p.router.removePreRegistered(key)
log.Errorf("Cannot connect to [%s] for %s error: %s\n", target, key, err)
frm.action = FRAME_ACTION_OPEN_N
tunWrite2(tun, frm)
} else {
if log.V(1) {
log.Infoln("OPEN", target, "for", key)
}
dstConn.SetReadDeadline(ZERO_TIME)
edge := p.router.register(key, target, tun, dstConn, false) // write edge
frm.action = FRAME_ACTION_OPEN_Y
if tunWrite2(tun, frm) == nil {
p.relay(edge, tun, frm.sid) // read edge
} else { // send open_y failed
SafeClose(tun)
}
}
}
开发者ID:hangim,项目名称:deblocus,代码行数:30,代码来源:multiplexer.go
示例2: DataTunServe
func (t *Session) DataTunServe(fconn *Conn, buf []byte) {
defer func() {
var offline bool
if atomic.AddInt32(&t.activeCnt, -1) <= 0 {
offline = true
t.mgr.clearTokens(t)
t.mux.destroy()
}
var err = recover()
if log.V(1) {
log.Infof("Tun=%s was disconnected. %v\n", fconn.identifier, nvl(err, NULL))
if offline {
log.Infof("Client=%s was offline\n", t.cid)
}
}
if DEBUG {
ex.CatchException(err)
}
}()
atomic.AddInt32(&t.activeCnt, 1)
if buf != nil {
token := buf[:TKSZ]
fconn.cipher = t.cipherFactory.NewCipher(token)
buf = nil
} else { // first negotiation had initialized cipher, the buf will be null
log.Infof("Client=%s is online\n", t.cid)
}
if log.V(1) {
log.Infof("Tun=%s is established\n", fconn.identifier)
}
t.mux.Listen(fconn, t.eventHandler, DT_PING_INTERVAL)
}
开发者ID:hangim,项目名称:deblocus,代码行数:34,代码来源:server.go
示例3: bestSend
func (p *multiplexer) bestSend(data []byte, action_desc string) bool {
var buf = make([]byte, FRAME_HEADER_LEN+len(data))
_frame(buf, FRAME_ACTION_TOKENS, 0, data)
var tun *Conn
for i := 1; i <= 3; i++ {
if p.status < 0 /* MUX_CLOSED */ || p.pool == nil {
if log.V(4) {
log.Warningln("abandon sending data of", action_desc)
}
break
}
tun = p.pool.Select()
if tun != nil {
if tunWrite1(tun, buf) == nil {
return true
}
} else {
time.Sleep(time.Millisecond * 200 * time.Duration(i))
}
}
if log.V(3) {
log.Warningln("failed to send data of", action_desc)
}
return false
}
开发者ID:hangim,项目名称:deblocus,代码行数:25,代码来源:multiplexer.go
示例4: acquire
func acquire(s *semaphore, id int, t *testing.T) {
if s.acquire(tmo) {
atomic.AddInt32(&cnt1, 1)
if log.V(3) {
t.Log("\tacquired", id)
}
} else {
atomic.AddInt32(&cnt2, 1)
if log.V(3) {
t.Log("\tacquired timeout", id)
}
}
}
开发者ID:hangim,项目名称:deblocus,代码行数:13,代码来源:sema_test.go
示例5: acknowledged
func (t *signalTunnel) acknowledged() {
if log.V(4) {
log.Infoln("Ping/acknowledged by", t.remoteAddr)
}
t.tun.SetReadDeadline(ZERO_TIME)
t.active(-2) // so slow down the tempo
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:7,代码来源:sigTun.go
示例6: getToken
func (c *Client) getToken() []byte {
c.lock.Lock()
defer func() {
c.lock.Unlock()
tlen := len(c.token) / TKSZ
if tlen <= TOKENS_FLOOR && atomic.LoadInt32(&c.State) == 0 {
atomic.AddInt32(&c.State, 1)
if log.V(4) {
log.Infof("Request new tokens, pool=%d\n", tlen)
}
c.sigTun.postCommand(TOKEN_REQUEST, nil)
}
}()
for len(c.token) < TKSZ {
log.Warningln("waiting for token. May be the requests are coming too fast.")
c.waitTK.Wait()
if atomic.LoadInt32(&c.State) < 0 {
panic("Abandon the request beacause the tunSession was lost.")
}
}
token := c.token[:TKSZ]
c.token = c.token[TKSZ:]
return token
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:25,代码来源:client.go
示例7: createTokens
// return header=1 + TKSZ*many
func (s *SessionMgr) createTokens(session *Session, many int) []byte {
s.lock.Lock()
defer s.lock.Unlock()
var (
tokens = make([]byte, 1+many*TKSZ)
i64buf = make([]byte, 8)
_tokens = tokens[1:]
sha = sha1.New()
)
rand.Seed(time.Now().UnixNano())
sha.Write([]byte(session.uid))
for i := 0; i < many; i++ {
binary.BigEndian.PutUint64(i64buf, uint64(rand.Int63()))
sha.Write(i64buf)
binary.BigEndian.PutUint64(i64buf, uint64(time.Now().UnixNano()))
sha.Write(i64buf)
pos := i * TKSZ
sha.Sum(_tokens[pos:pos])
token := _tokens[pos : pos+TKSZ]
key := fmt.Sprintf("%x", token)
if _, y := s.container[key]; y {
i--
continue
}
s.container[key] = session
session.tokens[key] = true
}
if log.V(4) {
log.Errorf("sessionMap created=%d len=%d\n", many, len(s.container))
}
return tokens
}
开发者ID:hangim,项目名称:deblocus,代码行数:33,代码来源:server.go
示例8: TestSingleRequest
func TestSingleRequest(t *testing.T) {
startEmulation()
conn, e := net.Dial("tcp", cltAddr)
ThrowErr(e)
rest(1)
assertLength(t, "client.registry", client.router.registry, 1)
buf0 := make([]byte, 0xffff)
buf1 := make([]byte, 0xffff)
for i := 0; i < 10; i++ {
n := randomBuffer(buf0)
binary.BigEndian.PutUint16(buf0, n-2)
nw, e := conn.Write(buf0[:n])
ThrowErr(e)
nr, e := io.ReadFull(conn, buf1[:n-2])
ThrowErr(e)
if log.V(3) {
fmt.Printf("\tsend=%d recv=%d\n", nw, nr)
}
if !bytes.Equal(buf0[2:n], buf1[:nr]) {
t.Errorf("sent is inconsistent with recv. nw=%d nr=%d\n", nw, nr)
}
}
conn.Close()
rest(2)
checkFinishedLength(t)
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:26,代码来源:multiplexer_test.go
示例9: verifyThenDHExchange
func (nego *d5SNegotiation) verifyThenDHExchange(conn net.Conn, credBuf []byte) (key []byte, err error) {
userIdentity, err := RSADecrypt(credBuf, nego.RSAKeys.priv)
ThrowErr(err)
clientIdentity := string(userIdentity)
if log.V(2) {
log.Infoln("Auth clientIdentity:", clientIdentity)
}
allow, ex := nego.AuthSys.Authenticate(userIdentity)
cDHPub, err := ReadFullByLen(2, conn)
if !allow {
log.Warningf("Auth %s failed: %v\n", clientIdentity, ex)
conn.Write([]byte{0, 1, 0xff})
return nil, ex
}
nego.clientIdentity = clientIdentity
key = takeSharedKey(nego.dhKeys, cDHPub)
// if log.V(5) {
// dumpHex("Sharedkey", key)
// }
buf := new(bytes.Buffer)
buf.Write(nego.dhKeys.pubLen)
buf.Write(nego.dhKeys.pub)
_, err = buf.WriteTo(conn)
return
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:25,代码来源:d5.go
示例10: TestConcurrency
func TestConcurrency(t *testing.T) {
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func(j int) {
defer wg.Done()
conn, e := net.Dial("tcp", cltAddr)
ThrowErr(e)
buf0 := make([]byte, 0xffff)
buf1 := make([]byte, 0xffff)
for i := 0; i < 99; i++ {
n := randomBuffer(buf0)
binary.BigEndian.PutUint16(buf0, n-2)
nw, e := conn.Write(buf0[:n])
ThrowErr(e)
nr, e := io.ReadFull(conn, buf1[:n-2])
ThrowErr(e)
if log.V(3) {
fmt.Printf("\tthread=%d send=%d recv=%d\n", j, nw, nr)
}
if !bytes.Equal(buf0[2:n], buf1[:nr]) {
t.Errorf("thread=%d sent != recv. nw=%d nr=%d\n", j, nw, nr)
}
}
conn.Close()
}(i)
}
wg.Wait()
rest(3)
checkFinishedLength(t)
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:31,代码来源:multiplexer_test.go
示例11: startDataTun
func (c *Client) startDataTun(again bool) {
var connected bool
defer func() {
if connected {
atomic.AddInt32(&c.dtCnt, -1)
}
if err := recover(); err != nil {
log.Errorf("DTun failed to connect(%s). Retry after %s\n", err, RETRY_INTERVAL)
c.eventHandler(evt_dt_closed, true)
if DEBUG {
ex.CatchException(err)
}
}
}()
if again {
time.Sleep(RETRY_INTERVAL)
}
for {
if atomic.LoadInt32(&c.State) == 0 {
conn := c.createDataTun()
connected = true
if log.V(1) {
log.Infof("DTun(%s) is established\n", conn.sign())
}
atomic.AddInt32(&c.dtCnt, 1)
c.mux.Listen(conn, c.eventHandler, c.tp.dtInterval)
log.Errorf("DTun(%s) was disconnected. Reconnect after %s\n", conn.sign(), RETRY_INTERVAL)
break
} else {
c.pendingSema.acquire(RETRY_INTERVAL)
}
}
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:33,代码来源:client.go
示例12: NewD5Params
// without sPub field
func NewD5Params(uri string) (*D5Params, error) {
re := regexp.MustCompile("d5://(\\w+):(\\w+)@([.:a-zA-Z0-9-]+)#(\\w+)")
ma := re.FindStringSubmatch(uri)
if len(ma) != 5 {
return nil, INVALID_D5PARAMS
}
_, y := availableCiphers[ma[4]]
if !y {
return nil, UNSUPPORTED_CIPHER.Apply(ma[4])
}
d5sAddr, e := net.ResolveTCPAddr("tcp", ma[3])
if e != nil {
return nil, D5SER_UNREACHABLE.Apply(e)
}
if log.V(2) {
log.Infof("D5Params: %q\n", ma[1:])
}
return &D5Params{
d5sAddrStr: ma[3],
d5sAddr: d5sAddr,
algo: ma[4],
user: ma[1],
pass: ma[2],
}, nil
}
开发者ID:hangim,项目名称:deblocus,代码行数:26,代码来源:config.go
示例13: requireTokens
// async request
func (c *Client) requireTokens() {
// non-working state can't require anything
if atomic.CompareAndSwapInt32(&c.State, CLT_WORKING, CLT_PENDING) {
if log.V(3) {
log.Infof("Request new tokens, pool=%d\n", len(c.token)/TKSZ)
}
go c.mux.bestSend([]byte{FRAME_ACTION_TOKEN_REQUEST}, "requireTokens")
}
}
开发者ID:hangim,项目名称:deblocus,代码行数:10,代码来源:client.go
示例14: putTokens
func (c *Client) putTokens(tokens []byte) {
c.lock.Lock()
defer c.lock.Unlock()
c.token = append(c.token, tokens...)
atomic.StoreInt32(&c.State, 0)
c.waitTK.Broadcast()
if log.V(4) {
log.Infof("Recv tokens=%d pool=%d\n", len(tokens)/TKSZ, len(c.token)/TKSZ)
}
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:10,代码来源:client.go
示例15: onSTDisconnected
func (t *Session) onSTDisconnected() {
tid := t.tun.identifier
SafeClose(t.tun)
atomic.AddInt32(&t.svr.stCnt, -1)
log.Warningf("Client(%s)-ST was disconnected\n", tid)
i := t.svr.sessionMgr.clearTokens(t)
if log.V(4) {
log.Infof("Clear tokens %d of %s\n", i, tid)
}
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:10,代码来源:server.go
示例16: HandleRequest
func (p *multiplexer) HandleRequest(prot string, client net.Conn, target string) {
sid := _nextSID()
if log.V(1) {
log.Infof("%s->[%s] from=%s sid=%d\n", prot, target, ipAddr(client.RemoteAddr()), sid)
}
tun := p.pool.Select()
ThrowIf(tun == nil, "No tun to deliveries request")
key := sessionKey(tun, sid)
edge := p.router.register(key, target, tun, client, true) // write edge
p.relay(edge, tun, sid) // read edge
}
开发者ID:hangim,项目名称:deblocus,代码行数:11,代码来源:multiplexer.go
示例17: imAlive
func (t *signalTunnel) imAlive() {
if log.V(4) {
log.Infoln("Ping/responded to", t.remoteAddr)
}
t.active(-1) // up tempo for become a sender
_, err := t.postCommand(CTL_PONG, nil)
if err != nil {
SafeClose(t.tun)
log.Warningln("Reply ping failed and then closed", t.remoteAddr, err)
}
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:11,代码来源:sigTun.go
示例18: sendFrame
func sendFrame(frm *frame) (werr bool) {
dst := frm.conn.conn
if log.V(5) {
log.Infoln("SEND queue", frm)
}
dst.SetWriteDeadline(time.Now().Add(GENERAL_SO_TIMEOUT))
nw, ew := dst.Write(frm.data)
if nw == int(frm.length) && ew == nil {
return
}
werr = true
// an error occured
log.Warningf("Write edge(%s) error(%v). %s\n", frm.conn.dest, ew, frm)
return
}
开发者ID:hangim,项目名称:deblocus,代码行数:15,代码来源:queue.go
示例19: areYouAlive
func (t *signalTunnel) areYouAlive() {
if log.V(4) {
log.Infoln("Ping/launched to", t.remoteAddr)
}
_, err := t.postCommand(CTL_PING, nil)
// Either waiting pong timeout or send ping failed
if err != nil {
SafeClose(t.tun)
log.Warningln("Ping remote failed and then closed", t.remoteAddr, err)
} else {
t.tun.SetReadDeadline(time.Now().Add(GENERAL_SO_TIMEOUT * 2))
// impossible call by timer, will reset by acknowledged or read timeout.
t.active(-1)
}
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:15,代码来源:sigTun.go
示例20: postCommand
func (t *signalTunnel) postCommand(cmd byte, args []byte) (n int, err error) {
t.lock.Lock()
defer t.lock.Unlock()
buf := randArray(CMD_HEADER_LEN, CMD_HEADER_LEN)
buf[0] = cmd
binary.BigEndian.PutUint16(buf[2:], uint16(len(args)))
if args != nil {
buf = append(buf, args...)
}
if log.V(4) {
log.Infof("send command packet=[% x]\n", buf)
}
t.tun.SetWriteDeadline(time.Now().Add(GENERAL_SO_TIMEOUT * 2))
n, err = t.tun.Write(buf)
return
}
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:deblocus,代码行数:16,代码来源:sigTun.go
注:本文中的github.com/spance/deblocus/golang/glog.V函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论