mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * SRT - Secure, Reliable, Transport
 | |
|  * Copyright (c) 2021 Haivision Systems Inc.
 | |
|  *
 | |
|  * This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************
 | |
| Written by
 | |
|    Haivision Systems Inc.
 | |
| *****************************************************************************/
 | |
| 
 | |
| #include "platform_sys.h"
 | |
| 
 | |
| #include "group_common.h"
 | |
| #include "api.h"
 | |
| 
 | |
| namespace srt
 | |
| {
 | |
| namespace groups
 | |
| {
 | |
| 
 | |
| SocketData prepareSocketData(CUDTSocket* s)
 | |
| {
 | |
|     // This uses default SRT_GST_BROKEN because when the group operation is done,
 | |
|     // then the SRT_GST_IDLE state automatically turns into SRT_GST_RUNNING. This is
 | |
|     // recognized as an initial state of the fresh added socket to the group,
 | |
|     // so some "initial configuration" must be done on it, after which it's
 | |
|     // turned into SRT_GST_RUNNING, that is, it's treated as all others. When
 | |
|     // set to SRT_GST_BROKEN, this socket is disregarded. This socket isn't cleaned
 | |
|     // up, however, unless the status is simultaneously SRTS_BROKEN.
 | |
| 
 | |
|     // The order of operations is then:
 | |
|     // - add the socket to the group in this "broken" initial state
 | |
|     // - connect the socket (or get it extracted from accept)
 | |
|     // - update the socket state (should be SRTS_CONNECTED)
 | |
|     // - once the connection is established (may take time with connect), set SRT_GST_IDLE
 | |
|     // - the next operation of send/recv will automatically turn it into SRT_GST_RUNNING
 | |
|     SocketData sd = {
 | |
|         s->m_SocketID,
 | |
|         s,
 | |
|         -1,
 | |
|         SRTS_INIT,
 | |
|         SRT_GST_BROKEN,
 | |
|         SRT_GST_BROKEN,
 | |
|         -1,
 | |
|         -1,
 | |
|         sockaddr_any(),
 | |
|         sockaddr_any(),
 | |
|         false,
 | |
|         false,
 | |
|         false,
 | |
|         0, // weight
 | |
|         0  // pktSndDropTotal
 | |
|     };
 | |
|     return sd;
 | |
| }
 | |
| 
 | |
| } // namespace groups
 | |
| } // namespace srt
 |