PeerCastStation.FLV.RTMP.RTMPConnection.Handshake C# (CSharp) Method

Handshake() private method

private Handshake ( CancellationToken cancel_token ) : Task
cancel_token System.Threading.CancellationToken
return Task
    private async Task Handshake(CancellationToken cancel_token)
    {
      using (var reader=await RecvAsync(1, cancel_token)) {
        var c0 = reader.ReadByte();
        if (c0!=3) {
          throw new InvalidDataException();
        }
      }
      await SendAsync(new byte[] { 0x03 }, cancel_token);

      using (var c1reader=await RecvAsync(1536, cancel_token)) {
        var c1time = c1reader.ReadInt32();
        var c1ver  = c1reader.ReadInt32();
        if (c1ver==0) {
          c1reader.BaseStream.Seek(0, SeekOrigin.Begin);
          await HandshakeOld(c1reader, cancel_token);
        }
        else {
          c1reader.BaseStream.Seek(0, SeekOrigin.Begin);
          await HandshakeNew(c1reader, cancel_token);
        }
      }
      timestampTimer.Reset();
      timestampTimer.Start();
      logger.Debug("Handshake completed");
    }