Golang euphoria-io-heim-proto.PacketType类(方法)实例源码

下面列出了Golang euphoria-io-heim-proto.PacketType 类(方法)源码代码实例,从而了解它的用法。

作者:loga    项目:hei   
func (r *RoomBase) broadcast(
	ctx scope.Context, cmdType proto.PacketType, payload interface{}, excluding ...proto.Session) error {

	excMap := make(map[string]struct{}, len(excluding))
	for _, x := range excluding {
		if x != nil {
			excMap[x.ID()] = struct{}{}
		}
	}

	for _, sessions := range r.live {
		for _, session := range sessions {
			if _, ok := excMap[session.ID()]; ok {
				continue
			}
			if err := session.Send(ctx, cmdType.Event(), payload); err != nil {
				// TODO: accumulate errors
				return err
			}
		}
	}

	if cmdType == proto.PartEventType {
		if presence, ok := payload.(*proto.PresenceEvent); ok {
			if waiter, ok := r.partWaiters[presence.SessionID]; ok {
				r.m.Unlock()
				waiter <- struct{}{}
				r.m.Lock()
			}
		}
	}
	return nil
}

作者:ArkaneMoos    项目:hei   
func (r *memRoom) broadcast(
	ctx scope.Context, cmdType proto.PacketType, payload interface{}, excluding ...proto.Session) error {

	excMap := make(map[string]struct{}, len(excluding))
	for _, x := range excluding {
		if x != nil {
			excMap[x.ID()] = struct{}{}
		}
	}

	for _, sessions := range r.live {
		for _, session := range sessions {
			if _, ok := excMap[session.ID()]; ok {
				continue
			}
			if err := session.Send(ctx, cmdType.Event(), payload); err != nil {
				// TODO: accumulate errors
				return err
			}
		}
	}
	return nil
}


问题


面经


文章

微信
公众号

扫码关注公众号