Browse Source

Added opcode enums

tags/docs-0.9
RogueException 9 years ago
parent
commit
13d397a0dc
2 changed files with 38 additions and 13 deletions
  1. +21
    -7
      src/Discord.Net/Net/WebSockets/DataWebSocket.cs
  2. +17
    -6
      src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs

+ 21
- 7
src/Discord.Net/Net/WebSockets/DataWebSocket.cs View File

@@ -7,8 +7,21 @@ using System.Threading.Tasks;
namespace Discord.Net.WebSockets
{
internal partial class DataWebSocket : WebSocket
{
private int _lastSeq;
{
public enum OpCodes : byte
{
Dispatch = 0,
Heartbeat = 1,
Identify = 2,
StatusUpdate = 3,
VoiceStateUpdate = 4,
VoiceServerPing = 5,
Resume = 6,
Redirect = 7,
RequestGuildMembers = 8
}

private int _lastSeq;

public string SessionId => _sessionId;
private string _sessionId;
@@ -74,10 +87,11 @@ namespace Discord.Net.WebSockets
var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json);
if (msg.Sequence.HasValue)
_lastSeq = msg.Sequence.Value;
switch (msg.Operation)

var opCode = (OpCodes)msg.Operation;
switch (opCode)
{
case 0:
case OpCodes.Dispatch:
{
JToken token = msg.Payload as JToken;
if (msg.Type == "READY")
@@ -96,7 +110,7 @@ namespace Discord.Net.WebSockets
EndConnect();
}
break;
case 7: //Redirect
case OpCodes.Redirect:
{
var payload = (msg.Payload as JToken).ToObject<RedirectEvent>(_client.DataSocketSerializer);
if (payload.Url != null)
@@ -110,7 +124,7 @@ namespace Discord.Net.WebSockets
break;
default:
if (_logLevel >= LogMessageSeverity.Warning)
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {msg.Operation}");
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {opCode}");
break;
}
}


+ 17
- 6
src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs View File

@@ -17,6 +17,16 @@ namespace Discord.Net.WebSockets
{
internal partial class VoiceWebSocket : WebSocket
{
public enum OpCodes : byte
{
Identify = 0,
SelectProtocol = 1,
Ready = 2,
Heartbeat = 3,
SessionDescription = 4,
Speaking = 5
}

private const int MaxOpusSize = 4000;
private const string EncryptedMode = "xsalsa20_poly1305";
private const string UnencryptedMode = "plain";
@@ -437,9 +447,10 @@ namespace Discord.Net.WebSockets
{
await base.ProcessMessage(json).ConfigureAwait(false);
var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json);
switch (msg.Operation)
var opCode = (OpCodes)msg.Operation;
switch (opCode)
{
case 2: //READY
case OpCodes.Ready:
{
if (_state != (int)WebSocketState.Connected)
{
@@ -476,7 +487,7 @@ namespace Discord.Net.WebSockets
}
}
break;
case 3: //PONG
case OpCodes.Heartbeat:
{
long time = EpochTime.GetMilliseconds();
var payload = (long)msg.Payload;
@@ -484,7 +495,7 @@ namespace Discord.Net.WebSockets
//TODO: Use this to estimate latency
}
break;
case 4: //SESSION_DESCRIPTION
case OpCodes.SessionDescription:
{
var payload = (msg.Payload as JToken).ToObject<JoinServerEvent>(_client.VoiceSocketSerializer);
_secretKey = payload.SecretKey;
@@ -492,7 +503,7 @@ namespace Discord.Net.WebSockets
EndConnect();
}
break;
case 5:
case OpCodes.Speaking:
{
var payload = (msg.Payload as JToken).ToObject<IsTalkingEvent>(_client.VoiceSocketSerializer);
RaiseIsSpeaking(payload.UserId, payload.IsSpeaking);
@@ -500,7 +511,7 @@ namespace Discord.Net.WebSockets
break;
default:
if (_logLevel >= LogMessageSeverity.Warning)
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {msg.Operation}");
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {opCode}");
break;
}
}


Loading…
Cancel
Save