protocol

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2020 License: BSD-3-Clause Imports: 10 Imported by: 0

Documentation

Overview

Package protocol includes some basics for the Steam protocol.

It defines basic interfaces that are used throughout go-steam:

There is Message, which is extended by ClientMessage (sent after logging in) and abstracts over the outgoing message types. Both interfaces are implemented by ClientProtoMessage and ClientStructMessage. StructMessage is like ClientStructMessage, but it is used for sending messages before logging in.

There is also the concept of a Packet: this is a type for incoming messages where only the header is deserialized. It therefore only contains EMsg data, job information and the remaining data. Its contents can then be read via the Read* methods which read data into a MessageBody - a type which is Serializable and has an EMsg.

In addition, there are extra types for communication with the Game Coordinator (GC) included in the gc sub-package. For outgoing messages the gc.Message interface is used which is implemented by gc.ProtoMessage and gc.StructMessage. Incoming messages are of the gc.Packet type and are read like regular Packets.

The actual messages and enums are in an external repository at https://github.com/13k/go-steam-resources.

Index

Constants

View Source
const DefaultAvatar = "fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb"

The default details to request in most situations

Variables

This section is empty.

Functions

func ValidAvatar

func ValidAvatar(avatar string) bool

Types

type ClientMessage

type ClientMessage interface {
	Message

	SessionID() int32
	SetSessionID(int32)
	SteamID() steamid.SteamID
	SetSteamID(steamid.SteamID)
}

ClientMessage is the interface for client messages, i.e. messages that are sent after logging in.

ClientStructMessage and ProtoMessage implement this.

type ClientStructMessage

type ClientStructMessage struct {
	Header  *ClientStructMessageHeader
	Body    StructMessageBody
	Payload []byte
}

ClientStructMessage represents a struct backed client message.

func NewClientStructMessage

func NewClientStructMessage(body StructMessageBody, payload []byte) *ClientStructMessage

func (*ClientStructMessage) IsProto

func (m *ClientStructMessage) IsProto() bool

func (*ClientStructMessage) Serialize

func (m *ClientStructMessage) Serialize(w io.Writer) error

func (*ClientStructMessage) SessionID

func (m *ClientStructMessage) SessionID() int32

func (*ClientStructMessage) SetSessionID

func (m *ClientStructMessage) SetSessionID(session int32)

func (*ClientStructMessage) SetSourceJobID

func (m *ClientStructMessage) SetSourceJobID(job JobID)

func (*ClientStructMessage) SetSteamID

func (m *ClientStructMessage) SetSteamID(s steamid.SteamID)

func (*ClientStructMessage) SetTargetJobID

func (m *ClientStructMessage) SetTargetJobID(job JobID)

func (*ClientStructMessage) SourceJobID

func (m *ClientStructMessage) SourceJobID() JobID

func (*ClientStructMessage) SteamID

func (m *ClientStructMessage) SteamID() steamid.SteamID

func (*ClientStructMessage) TargetJobID

func (m *ClientStructMessage) TargetJobID() JobID

func (*ClientStructMessage) Type

type ClientStructMessageHeader

type ClientStructMessageHeader struct {
	*steamlang.ExtendedClientMsgHdr
}

func NewClientStructMessageHeader

func NewClientStructMessageHeader() *ClientStructMessageHeader

func (*ClientStructMessageHeader) EMsg

func (*ClientStructMessageHeader) IsProto

func (h *ClientStructMessageHeader) IsProto() bool

func (*ClientStructMessageHeader) SessionID

func (h *ClientStructMessageHeader) SessionID() int32

func (*ClientStructMessageHeader) SetEMsg

func (h *ClientStructMessageHeader) SetEMsg(emsg steamlang.EMsg)

func (*ClientStructMessageHeader) SetSessionID

func (h *ClientStructMessageHeader) SetSessionID(id int32)

func (*ClientStructMessageHeader) SetSourceJobID

func (h *ClientStructMessageHeader) SetSourceJobID(job JobID)

func (*ClientStructMessageHeader) SetSteamID

func (h *ClientStructMessageHeader) SetSteamID(id steamid.SteamID)

func (*ClientStructMessageHeader) SetTargetJobID

func (h *ClientStructMessageHeader) SetTargetJobID(job JobID)

func (*ClientStructMessageHeader) SourceJobID

func (h *ClientStructMessageHeader) SourceJobID() JobID

func (*ClientStructMessageHeader) SteamID

func (*ClientStructMessageHeader) TargetJobID

func (h *ClientStructMessageHeader) TargetJobID() JobID

type Deserializer

type Deserializer interface {
	Deserialize(r io.Reader) error
}

type JobID

type JobID uint64

func (JobID) String

func (j JobID) String() string

type Message

type Message interface {
	Serializer

	IsProto() bool
	Type() steamlang.EMsg
	SourceJobID() JobID
	SetSourceJobID(JobID)
	TargetJobID() JobID
	SetTargetJobID(JobID)
}

Message is the interface for all messages, typically outgoing.

They can also be created by using the Read* methods of Packet.

type MessageHeader

type MessageHeader interface {
	Serializable

	EMsg() steamlang.EMsg
	SetEMsg(steamlang.EMsg)
	IsProto() bool
	SourceJobID() JobID
	SetSourceJobID(JobID)
	TargetJobID() JobID
	SetTargetJobID(JobID)
}

type Packet

type Packet struct {
	Header  MessageHeader // decoded header
	Payload io.Reader     // unread data
	Data    []byte        // whole packet data, including header
}

Packet represents an incoming, partially decoded message.

func NewPacket

func NewPacket(data []byte) (*Packet, error)

func (*Packet) EMsg

func (p *Packet) EMsg() steamlang.EMsg

func (*Packet) IsProto

func (p *Packet) IsProto() bool

func (*Packet) ReadClientMsg

func (p *Packet) ReadClientMsg(body StructMessageBody) (*ClientStructMessage, error)

func (*Packet) ReadMsg

func (p *Packet) ReadMsg(body StructMessageBody) (*StructMessage, error)

func (*Packet) ReadProtoMsg

func (p *Packet) ReadProtoMsg(body proto.Message) (*ProtoMessage, error)

func (*Packet) SourceJobID

func (p *Packet) SourceJobID() JobID

func (*Packet) String

func (p *Packet) String() string

func (*Packet) TargetJobID

func (p *Packet) TargetJobID() JobID

type PacketHandler

type PacketHandler interface {
	HandlePacket(*Packet)
}

type ProtoMessage

type ProtoMessage struct {
	Header *ProtoMessageHeader
	Body   proto.Message
}

ProtoMessage represents a protobuf backed client message with session data.

func NewProtoMessage

func NewProtoMessage(emsg steamlang.EMsg, pb proto.Message) *ProtoMessage

func (*ProtoMessage) IsProto

func (m *ProtoMessage) IsProto() bool

func (*ProtoMessage) Serialize

func (m *ProtoMessage) Serialize(w io.Writer) error

func (*ProtoMessage) SessionID

func (m *ProtoMessage) SessionID() int32

func (*ProtoMessage) SetSessionID

func (m *ProtoMessage) SetSessionID(id int32)

func (*ProtoMessage) SetSourceJobID

func (m *ProtoMessage) SetSourceJobID(job JobID)

func (*ProtoMessage) SetSteamID

func (m *ProtoMessage) SetSteamID(id steamid.SteamID)

func (*ProtoMessage) SetTargetJobID

func (m *ProtoMessage) SetTargetJobID(job JobID)

func (*ProtoMessage) SourceJobID

func (m *ProtoMessage) SourceJobID() JobID

func (*ProtoMessage) SteamID

func (m *ProtoMessage) SteamID() steamid.SteamID

func (*ProtoMessage) TargetJobID

func (m *ProtoMessage) TargetJobID() JobID

func (*ProtoMessage) Type

func (m *ProtoMessage) Type() steamlang.EMsg

type ProtoMessageHeader

type ProtoMessageHeader struct {
	*steamlang.MsgHdrProtoBuf
}

func NewProtoMessageHeader

func NewProtoMessageHeader() *ProtoMessageHeader

func (*ProtoMessageHeader) EMsg

func (h *ProtoMessageHeader) EMsg() steamlang.EMsg

func (*ProtoMessageHeader) IsProto

func (h *ProtoMessageHeader) IsProto() bool

func (*ProtoMessageHeader) SessionID

func (h *ProtoMessageHeader) SessionID() int32

func (*ProtoMessageHeader) SetEMsg

func (h *ProtoMessageHeader) SetEMsg(emsg steamlang.EMsg)

func (*ProtoMessageHeader) SetSessionID

func (h *ProtoMessageHeader) SetSessionID(id int32)

func (*ProtoMessageHeader) SetSourceJobID

func (h *ProtoMessageHeader) SetSourceJobID(job JobID)

func (*ProtoMessageHeader) SetSteamID

func (h *ProtoMessageHeader) SetSteamID(id steamid.SteamID)

func (*ProtoMessageHeader) SetTargetJobID

func (h *ProtoMessageHeader) SetTargetJobID(job JobID)

func (*ProtoMessageHeader) SourceJobID

func (h *ProtoMessageHeader) SourceJobID() JobID

func (*ProtoMessageHeader) SteamID

func (h *ProtoMessageHeader) SteamID() steamid.SteamID

func (*ProtoMessageHeader) TargetJobID

func (h *ProtoMessageHeader) TargetJobID() JobID

type Serializable

type Serializable interface {
	Serializer
	Deserializer
}

type Serializer

type Serializer interface {
	Serialize(w io.Writer) error
}

type StructMessage

type StructMessage struct {
	Header  *StructMessageHeader
	Body    StructMessageBody
	Payload []byte
}

StructMessage represents a struct backed message.

func NewStructMessage

func NewStructMessage(body StructMessageBody, payload []byte) *StructMessage

func (*StructMessage) IsProto

func (m *StructMessage) IsProto() bool

func (*StructMessage) Serialize

func (m *StructMessage) Serialize(w io.Writer) error

func (*StructMessage) SetSourceJobID

func (m *StructMessage) SetSourceJobID(job JobID)

func (*StructMessage) SetTargetJobID

func (m *StructMessage) SetTargetJobID(job JobID)

func (*StructMessage) SourceJobID

func (m *StructMessage) SourceJobID() JobID

func (*StructMessage) TargetJobID

func (m *StructMessage) TargetJobID() JobID

func (*StructMessage) Type

func (m *StructMessage) Type() steamlang.EMsg

type StructMessageBody

type StructMessageBody interface {
	Serializable

	GetEMsg() steamlang.EMsg
}

type StructMessageHeader

type StructMessageHeader struct {
	*steamlang.MsgHdr
}

func NewStructMessageHeader

func NewStructMessageHeader() *StructMessageHeader

func (*StructMessageHeader) EMsg

func (*StructMessageHeader) IsProto

func (h *StructMessageHeader) IsProto() bool

func (*StructMessageHeader) SetEMsg

func (h *StructMessageHeader) SetEMsg(emsg steamlang.EMsg)

func (*StructMessageHeader) SetSourceJobID

func (h *StructMessageHeader) SetSourceJobID(job JobID)

func (*StructMessageHeader) SetTargetJobID

func (h *StructMessageHeader) SetTargetJobID(job JobID)

func (*StructMessageHeader) SourceJobID

func (h *StructMessageHeader) SourceJobID() JobID

func (*StructMessageHeader) TargetJobID

func (h *StructMessageHeader) TargetJobID() JobID

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL