You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.0 KiB
43 lines
1.0 KiB
package mtproto |
|
|
|
import ( |
|
"github.com/go-faster/errors" |
|
"go.uber.org/zap" |
|
|
|
"github.com/gotd/td/bin" |
|
"github.com/gotd/td/internal/mt" |
|
"github.com/gotd/td/internal/proto" |
|
) |
|
|
|
func (c *Conn) handleMessage(msgID int64, b *bin.Buffer) error { |
|
id, err := b.PeekID() |
|
if err != nil { |
|
// Empty body. |
|
return errors.Wrap(err, "peek message type") |
|
} |
|
|
|
c.logWithBuffer(b).Debug("Handle message", zap.Int64("msg_id", msgID)) |
|
switch id { |
|
case mt.NewSessionCreatedTypeID: |
|
return c.handleSessionCreated(b) |
|
case mt.BadMsgNotificationTypeID, mt.BadServerSaltTypeID: |
|
return c.handleBadMsg(b) |
|
case mt.FutureSaltsTypeID: |
|
return c.handleFutureSalts(b) |
|
case proto.MessageContainerTypeID: |
|
return c.handleContainer(msgID, b) |
|
case proto.ResultTypeID: |
|
return c.handleResult(b) |
|
case mt.PongTypeID: |
|
return c.handlePong(b) |
|
case mt.MsgsAckTypeID: |
|
return c.handleAck(b) |
|
case proto.GZIPTypeID: |
|
return c.handleGZIP(msgID, b) |
|
case mt.MsgDetailedInfoTypeID, |
|
mt.MsgNewDetailedInfoTypeID: |
|
return nil |
|
default: |
|
return c.handler.OnMessage(b) |
|
} |
|
}
|
|
|