当前位置: 首页>>代码示例>>Golang>>正文


Golang Request.Len方法代码示例

本文整理汇总了Golang中github.com/dongzerun/smartproxy/redis.Request.Len方法的典型用法代码示例。如果您正苦于以下问题:Golang Request.Len方法的具体用法?Golang Request.Len怎么用?Golang Request.Len使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/dongzerun/smartproxy/redis.Request的用法示例。


在下文中一共展示了Request.Len方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: preCheckCommand

// buf, shouldClose, handled, err
func preCheckCommand(req *redis.Request) ([]byte, bool, bool, error) {
	var reply []byte
	shouldClose := false

	if req.Len() == 0 {
		return reply, false, true, BadCommandError
	}
	cmd := req.Name()
	switch cmd {
	case "PING":
		reply = []byte("+PONG\r\n")
	case "QUIT":
		reply = OK_BYTES
		shouldClose = true
	case "SELECT":
		//支持 select,但是到后台全部都用的 db 0
		//hia hia hia hia 没办法。。。
		reply = OK_BYTES
	case "AUTH":
		reply = OK_BYTES
	case "ECHO":
		if len(req.Args()) == 1 {
			echo := fmt.Sprintf("+%s\r\n", req.Args()[0])
			return []byte(echo), false, true, nil
		} else {
			return nil, false, true, WrongArgumentCount
		}
	}

	if len(reply) > 0 {
		return reply, shouldClose, true, nil
	}

	if err := verifyCommand(req); err != nil {
		return nil, shouldClose, true, err
	}

	if len(req.Args()) >= 1 {
		if _, ok := BlackKeyLists[req.Args()[0]]; ok {
			// key blacked
			reply = []byte("-key already be blacked \r\n")
			return reply, shouldClose, true, nil
		}
	}

	return reply, shouldClose, false, nil
}
开发者ID:shitfSign,项目名称:smartproxy,代码行数:48,代码来源:precheck.go

示例2: verifyCommand

func verifyCommand(req *redis.Request) error {
	if req == nil || req.Len() == 0 {
		return BadCommandError
	}

	name := req.Name()

	if _, ok := blackList[name]; ok {
		return CommandForbidden
	}

	rule, exist := reqrules[name]
	if !exist {
		// may return an error ?
		return BadCommandError
	}

	for i, count := 0, len(rule); i < count; i++ {
		switch i {
		case RI_MinCount:
			if val := rule[i].(int); val != -1 && req.Len() < val {
				return WrongArgumentCount
			}
		case RI_MaxCount:
			if val := rule[i].(int); val != -1 && req.Len() > val {
				return WrongArgumentCount
			}
		}
	}

	return nil
}
开发者ID:shitfSign,项目名称:smartproxy,代码行数:32,代码来源:precheck.go


注:本文中的github.com/dongzerun/smartproxy/redis.Request.Len方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。