示例#1
0
文件: sesuser.go 项目: chogaths/robin
func GetUser(ses *netdef.Session) *User {
	v := ses.GetTag(gameUserTag)
	if v != nil {
		return v.(*User)
	}
	return nil
}
示例#2
0
文件: relay.go 项目: chogaths/robin
func (self *relayComponent) SendRaw(relaySession *netdef.Session, sessionid int64, pkt *netdef.Packet) error {

	if relaySession == nil {
		return nil
	}

	// 整合调用封包
	relaySession.Send(&coredef.RelayMessageACK{
		UserMsgID: proto.Uint32(pkt.MsgID),
		UserMsg:   pkt.Data,
		SessionID: proto.Int64(sessionid),
	})

	return nil

}
示例#3
0
func (self *binaryAcceptor) addSession(ses *netdef.Session) {

	ses.SessionID = atomic.AddInt64(&self.sesIDAcc, 1)

	self.sesMapGuard.Lock()
	self.sesMap[self.sesIDAcc] = ses
	self.sesMapGuard.Unlock()

}
示例#4
0
文件: peer.go 项目: chogaths/robin
// 流包到Chan队列
func RecvPacketLoop(ses *netdef.Session) {

	var err error
	var pkt *netdef.Packet
	// 循环读取封包
	for {

		pkt, err = ses.PStream.Read()

		if err != nil {
			break
		}

		// 封包变事件
		ses.PostEvent(&netdef.NetEvent{Method: netdef.EventRecvPacket, Pkt: pkt, Ses: ses, Tag: nil})
	}

	ses.InternalStop(err)

}
示例#5
0
文件: sesuser.go 项目: chogaths/robin
// 移除ses上的绑定
func RemoveUser(ses *netdef.Session) *User {

	tag := ses.GetTag(gameUserTag)

	if tag == nil {
		return nil
	}

	u := tag.(*User)

	userGuard.Lock()

	ses.SetTag(gameUserTag, nil)

	userCount = userCount - 1

	userGuard.Unlock()

	return u

}