123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package pomelo
- import (
- cfacade "github.com/mhaya/facade"
- clog "github.com/mhaya/logger"
- cactor "github.com/mhaya/net/actor"
- cproto "github.com/mhaya/net/proto"
- )
- const (
- ResponseFuncName = "response"
- PushFuncName = "push"
- KickFuncName = "kick"
- BroadcastName = "broadcast"
- )
- type ActorBase struct {
- cactor.Base
- }
- func (p *ActorBase) Response(session *cproto.Session, v interface{}) {
- Response(p, session.AgentPath, session.Sid, session.Mid, v)
- }
- func (p *ActorBase) ResponseCode(session *cproto.Session, statusCode int32) {
- ResponseCode(p, session.AgentPath, session.Sid, session.Mid, statusCode)
- }
- func (p *ActorBase) Push(session *cproto.Session, route string, v interface{}) {
- Push(p, session.AgentPath, session.Sid, route, v)
- }
- func (p *ActorBase) Kick(session *cproto.Session, reason interface{}, closed bool) {
- Kick(p, session.AgentPath, session.Sid, reason, closed)
- }
- func (p *ActorBase) Broadcast(agentPath string, uidList []int64, allUID bool, route string, v interface{}) {
- Broadcast(p, agentPath, uidList, allUID, route, v)
- }
- func Response(iActor cfacade.IActor, agentPath, sid string, mid uint32, v interface{}) {
- data, err := iActor.App().Serializer().Marshal(v)
- if err != nil {
- clog.Warnf("[Response] Marshal error. v = %+v", v)
- return
- }
- rsp := &cproto.PomeloResponse{
- Sid: sid,
- Mid: mid,
- Data: data,
- }
- iActor.Call(agentPath, ResponseFuncName, rsp)
- }
- func ResponseCode(iActor cfacade.IActor, agentPath, sid string, mid uint32, statusCode int32) {
- rsp := &cproto.PomeloResponse{
- Sid: sid,
- Mid: mid,
- Code: statusCode,
- }
- iActor.Call(agentPath, ResponseFuncName, rsp)
- }
- func Push(iActor cfacade.IActor, agentPath, sid, route string, v interface{}) {
- if route == "" {
- clog.Warn("[Push] route value error.")
- return
- }
- data, err := iActor.App().Serializer().Marshal(v)
- if err != nil {
- clog.Warnf("[Push] Marshal error. route =%s, v = %+v", route, v)
- return
- }
- rsp := &cproto.PomeloPush{
- Sid: sid,
- Route: route,
- Data: data,
- }
- iActor.Call(agentPath, PushFuncName, rsp)
- }
- func Kick(iActor cfacade.IActor, agentPath, sid string, reason interface{}, closed bool) {
- data, err := iActor.App().Serializer().Marshal(reason)
- if err != nil {
- clog.Warnf("[Kick] Marshal error. reason = %+v", reason)
- return
- }
- rsp := &cproto.PomeloKick{
- Sid: sid,
- Reason: data,
- Close: closed,
- }
- iActor.Call(agentPath, KickFuncName, rsp)
- }
- func Broadcast(iActor cfacade.IActor, agentPath string, uidList []int64, allUID bool, route string, v interface{}) {
- if !allUID && len(uidList) < 1 {
- clog.Warn("[Broadcast] uidList value error.")
- return
- }
- if route == "" {
- clog.Warn("[Broadcast] route value error.")
- return
- }
- data, err := iActor.App().Serializer().Marshal(v)
- if err != nil {
- clog.Warnf("[Kick] Marshal error. v = %+v", v)
- return
- }
- rsp := &cproto.PomeloBroadcastPush{
- UidList: uidList,
- AllUID: allUID,
- Route: route,
- Data: data,
- }
- iActor.Call(agentPath, BroadcastName, rsp)
- }
|