| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package command
- import (
- "io"
- "time"
- "github.com/v2ray/v2ray-core/common/serial"
- "github.com/v2ray/v2ray-core/common/uuid"
- "github.com/v2ray/v2ray-core/transport"
- )
- func init() {
- RegisterResponseCommand(1, func() Command { return new(SwitchAccount) })
- }
- // Size: 16 + 8 = 24
- type SwitchAccount struct {
- ID *uuid.UUID
- ValidUntil time.Time
- }
- func (this *SwitchAccount) Marshal(writer io.Writer) (int, error) {
- idBytes := this.ID.Bytes()
- timestamp := this.ValidUntil.Unix()
- timeBytes := serial.Int64Literal(timestamp).Bytes()
- writer.Write(idBytes)
- writer.Write(timeBytes)
- return 24, nil
- }
- func (this *SwitchAccount) Unmarshal(data []byte) error {
- if len(data) != 24 {
- return transport.CorruptedPacket
- }
- this.ID, _ = uuid.ParseBytes(data[0:16])
- this.ValidUntil = time.Unix(serial.BytesLiteral(data[16:24]).Int64Value(), 0)
- return nil
- }
|