Beispiel #1
0
func ClientReader(c *ClientSession) {
	defer c.ExceptionOccured()
	var dataBuf *bytes.Buffer
	for {
		// read 2 bytes package's length
		buf, err := utils.ReadFromConn(2, c.conn)
		if err != nil {
			// maybe connection broken
			// should call logic layer,onDisconection
			break
		}
		// then read the package
		packageLen := utils.BytesToUint16(buf)
		if packageLen == 0 {
			continue
		}

		data, err := utils.ReadFromConn(int(packageLen), c.conn)
		if err != nil {
			break
		}

		if ServerBs.SPipelineConfig.Cipher != nil {
			newData, err := ServerBs.SPipelineConfig.Cipher.DoDecrypt(data)
			if err != nil {
				fmt.Println("invalid data,stopped")
				break
			}
			dataBuf = bytes.NewBuffer(newData)
		} else {
			dataBuf = bytes.NewBuffer(data)
		}

		// get the command
		command := utils.BytesToUint32(dataBuf.Next(4))
		module := command / 10000
		funcs := command % 10000
		service, exist := ServerBs.SPipelineConfig.Router[module]
		var argv interface{}
		if exist {
			// get the arguments
			if ServerBs.SPipelineConfig.Proto != nil {
				err := ServerBs.SPipelineConfig.Proto.DoDecode(dataBuf.Bytes()[0:], argv)
				if err != nil {
					fmt.Println("invalid data,stopped")
					break
				}
			}

			go service.call(funcs, argv, c)
		} else {
			fmt.Println("invalid command,stopped")
			break
		}
	}
}
Beispiel #2
0
func main() {
	aaa := abc{"1", "2", 3}
	//	var bca interface{}
	//	bca = aaa
	//	m := Message{"Alice", "Hello", 1294706395881547000}
	msg, _ := utils.EncodeJson(aaa)
	fmt.Println(string(msg))
	c28, _ := utils.DecodeJson(msg)
	fmt.Println("c28:", c28)
	var c30 abc
	fmt.Println("c28.A:", c28["a"])
	fmt.Println("c28.C:", c28["c"])
	c30.A = c28["a"].(string)
	c30.C = int(c28["c"].(float64))
	fmt.Println("c30.A:", c30.A)
	fmt.Println("c30.C:", c30.C)
	err := json.Unmarshal(msg, &c30)

	fmt.Println(reflect.TypeOf(c28))

	for _, val := range c28 {
		val2 := reflect.ValueOf(val) //.FieldByName(val)
		fmt.Println("suck", val2)
	}

	for i := 0; i < reflect.ValueOf(c30).NumField(); i++ {
		//		val2 := reflect.ValueOf(val)//.FieldByName(val)
		fmt.Println("suck2", reflect.ValueOf(c30).Field(i))
	}

	//	fmt.Println("s")
	//	go server.ServerBs.InitWithConfigFile("config.xml")

	//	abcd := server.ServerBs
	//	abc := server.DefaultServerCommon()
	//	abc.Start()
	//	abcd.ServerParam = abc
	var c1 interface{}
	var c2 protocol
	var c3 *protocol
	//	var c4 protocol
	c1 = 1
	c2 = &JsonProtocol{}
	c3 = &c2
	fmt.Println(reflect.TypeOf(c1))
	fmt.Println(reflect.TypeOf(c2))
	fmt.Println(reflect.TypeOf(c3))

	fmt.Println(reflect.ValueOf(c1))
	fmt.Println(reflect.ValueOf(c2))
	fmt.Println(reflect.ValueOf(c3))

	db := []byte("*****@*****.**")
	//	key := "sfe023f_"
	var des server.Crypt
	des = &crypto.MiscCipher{Key: 0xA55AA55A}
	fmt.Println(reflect.TypeOf(reflect.TypeOf(des)))

	//	var chiper *server.Crypt
	//	chiper = &des

	result, err := des.DoEncrypt(db)
	fmt.Println("current:", string(result))
	if err != nil {
		panic(err)
	}
	//	fmt.Println(base64.StdEncoding.EncodeToString(result))
	origData, err := des.DoDecrypt(result)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(origData))
	fmt.Println(utils.BytesToUint16([]byte{1, 255}))
	fmt.Println(utils.Uint16ToBytes(511))
	server.ServerBs.InitWithConfigFile("config.xml")
	//	server.ServerBs.Start()
	//	select{}
}