James Kuszmaul | 4a42b18 | 2021-01-17 11:32:46 -0800 | [diff] [blame^] | 1 | #include "transport.h" |
| 2 | #include "../ice_gatherer/gatherer.h" |
| 3 | #include <rawrtc/ice_transport.h> |
| 4 | #include <rawrtcc/code.h> |
| 5 | #include <re.h> |
| 6 | #include <rew.h> |
| 7 | |
| 8 | /* |
| 9 | * Get the current ICE role of the ICE transport. |
| 10 | * Return `RAWRTC_CODE_NO_VALUE` code in case the ICE role has not been |
| 11 | * determined yet. |
| 12 | */ |
| 13 | enum rawrtc_code rawrtc_ice_transport_get_role( |
| 14 | enum rawrtc_ice_role* const rolep, // de-referenced |
| 15 | struct rawrtc_ice_transport* const transport) { |
| 16 | enum ice_role re_role; |
| 17 | enum rawrtc_code error; |
| 18 | enum rawrtc_ice_role role; |
| 19 | |
| 20 | // Check arguments |
| 21 | if (!rolep || !transport) { |
| 22 | return RAWRTC_CODE_INVALID_ARGUMENT; |
| 23 | } |
| 24 | |
| 25 | // Get libre role from ICE instance |
| 26 | re_role = trice_local_role(transport->gatherer->ice); |
| 27 | |
| 28 | // Translate role |
| 29 | error = rawrtc_re_ice_role_to_ice_role(&role, re_role); |
| 30 | if (error) { |
| 31 | return error; |
| 32 | } |
| 33 | |
| 34 | // Unknown? |
| 35 | if (re_role == ICE_ROLE_UNKNOWN) { |
| 36 | return RAWRTC_CODE_NO_VALUE; |
| 37 | } else { |
| 38 | // Set pointer |
| 39 | *rolep = role; |
| 40 | return RAWRTC_CODE_SUCCESS; |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | /* |
| 45 | * Get the current state of the ICE transport. |
| 46 | */ |
| 47 | enum rawrtc_code rawrtc_ice_transport_get_state( |
| 48 | enum rawrtc_ice_transport_state* const statep, // de-referenced |
| 49 | struct rawrtc_ice_transport* const transport) { |
| 50 | // Check arguments |
| 51 | if (!statep || !transport) { |
| 52 | return RAWRTC_CODE_INVALID_ARGUMENT; |
| 53 | } |
| 54 | |
| 55 | // Set state & done |
| 56 | *statep = transport->state; |
| 57 | return RAWRTC_CODE_SUCCESS; |
| 58 | } |