Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement SDL 0078 and SDL 0052 Control Frame Payloads #669

Merged
merged 27 commits into from
Aug 15, 2017

Conversation

joeljfischer
Copy link
Contributor

@joeljfischer joeljfischer commented Jul 27, 2017

Fixes #663, #616

This PR is ready for review.

Risk

This PR makes minor API changes.

Testing Plan

Unit tests and smoke tests will be conducted

Summary

Implements SDL-0052 and SDL-0078.

This PR implements constructed payloads, and building on top of that, control frame payloads. This involves several components:

  • Implement the bson_c_lib as a submodule
  • Build objects around the bson lib for the current implementation of control frame payloads
  • Send correct payloads in the protocol layer and decode correct payloads
  • Implement dynamic MTU sizing from start service ACKs

Changelog

Enhancements
  • Implement control frame payloads
  • Dynamic MTUs are now supported

Tasks Remaining:

  • Implement payload information around the video service ACK data (video width, height, protocol, and codec)
  • Implement enums from the Video Capabilities PR once implemented (video protocol / codec)
  • Block devs from using SMM for anything other than H.264 RAW.

Unit Tests

  • Implement unit test updates to protocol layer
  • Unit test dynamic MTU logic
  • Unit test control frame payload objects
  • Unit test video service payloads

CLA

* Allow max MTU size to be manually set to account for protocol v5 variable MTU sizes

* Create a control frame payload type instead of control frame types
* Add Int32 and Int64 not found BSON constants
* Rename constants
* Allow most params to be nullable, put nullability checks in
* Create missing initializers
* Old integer protocol version is now `majorProtocolVersion`
* New Protocol Listener delegates that pass the full protocol message
* Integrate protocol level constructed payloads for RPC start service, start service ACK, and start service NAK
… directly

* SDLGlobals maxProxyProtocolVersion renamed
* Assemble and attach the protocol version to the RPCStartService control message
* Shift around files in some groups
* Add a description to the start service payload
* Fix a bug in the start service ack v5 payload preventing the protocol version from being parsed
* Add the Video service start service and start service ack payload objects
@joeljfischer joeljfischer added enhancement proposal Accepted SDL Evolution Proposal labels Jul 27, 2017
@joeljfischer joeljfischer added this to the 4.7.0 milestone Jul 27, 2017
@joeljfischer joeljfischer self-assigned this Jul 27, 2017
@joeljfischer joeljfischer changed the base branch from master to develop July 27, 2017 20:16
@joeljfischer joeljfischer mentioned this pull request Jul 27, 2017
3 tasks
@joeljfischer joeljfischer changed the title WIP: Control Frame Payloads WIP: Implement SDL 0078 and SDL 0052 Control Frame Payloads Jul 27, 2017
* Fix a bug in video start service ack payload
* Remove unused hash id parameter in audio start service ack payload spec
@joeljfischer joeljfischer changed the title WIP: Implement SDL 0078 and SDL 0052 Control Frame Payloads Implement SDL 0078 and SDL 0052 Control Frame Payloads Aug 9, 2017
@joeljfischer joeljfischer merged commit 79f4340 into develop Aug 15, 2017
@joeljfischer joeljfischer deleted the feature/616_constructed_payloads branch August 15, 2017 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
proposal Accepted SDL Evolution Proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants