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
- func ValidAvatar(avatar string) bool
- type ClientMessage
- type ClientStructMessage
- func (m *ClientStructMessage) IsProto() bool
- func (m *ClientStructMessage) Serialize(w io.Writer) error
- func (m *ClientStructMessage) SessionID() int32
- func (m *ClientStructMessage) SetSessionID(session int32)
- func (m *ClientStructMessage) SetSourceJobID(job JobID)
- func (m *ClientStructMessage) SetSteamID(s steamid.SteamID)
- func (m *ClientStructMessage) SetTargetJobID(job JobID)
- func (m *ClientStructMessage) SourceJobID() JobID
- func (m *ClientStructMessage) SteamID() steamid.SteamID
- func (m *ClientStructMessage) TargetJobID() JobID
- func (m *ClientStructMessage) Type() steamlang.EMsg
- type ClientStructMessageHeader
- func (h *ClientStructMessageHeader) EMsg() steamlang.EMsg
- func (h *ClientStructMessageHeader) IsProto() bool
- func (h *ClientStructMessageHeader) SessionID() int32
- func (h *ClientStructMessageHeader) SetEMsg(emsg steamlang.EMsg)
- func (h *ClientStructMessageHeader) SetSessionID(id int32)
- func (h *ClientStructMessageHeader) SetSourceJobID(job JobID)
- func (h *ClientStructMessageHeader) SetSteamID(id steamid.SteamID)
- func (h *ClientStructMessageHeader) SetTargetJobID(job JobID)
- func (h *ClientStructMessageHeader) SourceJobID() JobID
- func (h *ClientStructMessageHeader) SteamID() steamid.SteamID
- func (h *ClientStructMessageHeader) TargetJobID() JobID
- type Deserializer
- type JobID
- type Message
- type MessageHeader
- type Packet
- func (p *Packet) EMsg() steamlang.EMsg
- func (p *Packet) IsProto() bool
- func (p *Packet) ReadClientMsg(body StructMessageBody) (*ClientStructMessage, error)
- func (p *Packet) ReadMsg(body StructMessageBody) (*StructMessage, error)
- func (p *Packet) ReadProtoMsg(body proto.Message) (*ProtoMessage, error)
- func (p *Packet) SourceJobID() JobID
- func (p *Packet) String() string
- func (p *Packet) TargetJobID() JobID
- type PacketHandler
- type ProtoMessage
- func (m *ProtoMessage) IsProto() bool
- func (m *ProtoMessage) Serialize(w io.Writer) error
- func (m *ProtoMessage) SessionID() int32
- func (m *ProtoMessage) SetSessionID(id int32)
- func (m *ProtoMessage) SetSourceJobID(job JobID)
- func (m *ProtoMessage) SetSteamID(id steamid.SteamID)
- func (m *ProtoMessage) SetTargetJobID(job JobID)
- func (m *ProtoMessage) SourceJobID() JobID
- func (m *ProtoMessage) SteamID() steamid.SteamID
- func (m *ProtoMessage) TargetJobID() JobID
- func (m *ProtoMessage) Type() steamlang.EMsg
- type ProtoMessageHeader
- func (h *ProtoMessageHeader) EMsg() steamlang.EMsg
- func (h *ProtoMessageHeader) IsProto() bool
- func (h *ProtoMessageHeader) SessionID() int32
- func (h *ProtoMessageHeader) SetEMsg(emsg steamlang.EMsg)
- func (h *ProtoMessageHeader) SetSessionID(id int32)
- func (h *ProtoMessageHeader) SetSourceJobID(job JobID)
- func (h *ProtoMessageHeader) SetSteamID(id steamid.SteamID)
- func (h *ProtoMessageHeader) SetTargetJobID(job JobID)
- func (h *ProtoMessageHeader) SourceJobID() JobID
- func (h *ProtoMessageHeader) SteamID() steamid.SteamID
- func (h *ProtoMessageHeader) TargetJobID() JobID
- type Serializable
- type Serializer
- type StructMessage
- func (m *StructMessage) IsProto() bool
- func (m *StructMessage) Serialize(w io.Writer) error
- func (m *StructMessage) SetSourceJobID(job JobID)
- func (m *StructMessage) SetTargetJobID(job JobID)
- func (m *StructMessage) SourceJobID() JobID
- func (m *StructMessage) TargetJobID() JobID
- func (m *StructMessage) Type() steamlang.EMsg
- type StructMessageBody
- type StructMessageHeader
- func (h *StructMessageHeader) EMsg() steamlang.EMsg
- func (h *StructMessageHeader) IsProto() bool
- func (h *StructMessageHeader) SetEMsg(emsg steamlang.EMsg)
- func (h *StructMessageHeader) SetSourceJobID(job JobID)
- func (h *StructMessageHeader) SetTargetJobID(job JobID)
- func (h *StructMessageHeader) SourceJobID() JobID
- func (h *StructMessageHeader) TargetJobID() JobID
Constants ¶
const DefaultAvatar = "fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb"
const DefaultPersonaStateFlagInfoRequest = steamlang.EClientPersonaStateFlag_PlayerName | steamlang.EClientPersonaStateFlag_Presence | steamlang.EClientPersonaStateFlag_SourceID | steamlang.EClientPersonaStateFlag_GameExtraInfo
The default details to request in most situations
Variables ¶
This section is empty.
Functions ¶
func ValidAvatar ¶
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) 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 ¶
func (m *ClientStructMessage) Type() steamlang.EMsg
type ClientStructMessageHeader ¶
type ClientStructMessageHeader struct {
*steamlang.ExtendedClientMsgHdr
}
func NewClientStructMessageHeader ¶
func NewClientStructMessageHeader() *ClientStructMessageHeader
func (*ClientStructMessageHeader) EMsg ¶
func (h *ClientStructMessageHeader) EMsg() steamlang.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 (h *ClientStructMessageHeader) SteamID() steamid.SteamID
func (*ClientStructMessageHeader) TargetJobID ¶
func (h *ClientStructMessageHeader) TargetJobID() JobID
type Deserializer ¶
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 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 (*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 (*Packet) TargetJobID ¶
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) 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 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) 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 ¶
func NewStructMessageHeader ¶
func NewStructMessageHeader() *StructMessageHeader
func (*StructMessageHeader) EMsg ¶
func (h *StructMessageHeader) EMsg() steamlang.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