Epoll removal tested and found working! :D
This commit is contained in:
		
							parent
							
								
									1640dbb933
								
							
						
					
					
						commit
						40bcb2ba72
					
				
					 4 changed files with 41 additions and 8 deletions
				
			
		|  | @ -237,7 +237,7 @@ namespace Connector_HTTP{ | |||
|             break; | ||||
|           case 0: break;//not ready yet
 | ||||
|           default: | ||||
|             if (tag.SockLoader(ss)){//able to read a full packet?f
 | ||||
|             if (tag.SockLoader(ss)){//able to read a full packet?
 | ||||
|               if (handler == HANDLER_FLASH){ | ||||
|                 if (tag.tagTime() > 0){ | ||||
|                   if (Flash_StartTime == 0){ | ||||
|  | @ -269,14 +269,18 @@ namespace Connector_HTTP{ | |||
|                     FlashFirstVideo = true; | ||||
|                     FlashFirstAudio = true; | ||||
|                   } | ||||
|                   if (FlashFirstVideo && (tag.data[0] == 0x09) && (Video_Init.len > 0)){ | ||||
|                     Video_Init.tagTime(tag.tagTime()); | ||||
|                     FlashBuf.append(Video_Init.data, Video_Init.len); | ||||
|                   if (FlashFirstVideo && (tag.data[0] == 0x09) && (!tag.needsInitData() || (Video_Init.len > 0))){ | ||||
|                     if (tag.needsInitData()){ | ||||
|                       Video_Init.tagTime(tag.tagTime()); | ||||
|                       FlashBuf.append(Video_Init.data, Video_Init.len); | ||||
|                     } | ||||
|                     FlashFirstVideo = false; | ||||
|                   } | ||||
|                   if (FlashFirstAudio && (tag.data[0] == 0x08) && (Audio_Init.len > 0)){ | ||||
|                     Audio_Init.tagTime(tag.tagTime()); | ||||
|                     FlashBuf.append(Audio_Init.data, Audio_Init.len); | ||||
|                   if (FlashFirstAudio && (tag.data[0] == 0x08) && (!tag.needsInitData() || (Audio_Init.len > 0))){ | ||||
|                     if (tag.needsInitData()){ | ||||
|                       Audio_Init.tagTime(tag.tagTime()); | ||||
|                       FlashBuf.append(Audio_Init.data, Audio_Init.len); | ||||
|                     } | ||||
|                     FlashFirstAudio = false; | ||||
|                   } | ||||
|                   #if DEBUG >= 5 | ||||
|  |  | |||
|  | @ -121,7 +121,10 @@ int Connector_RTMP::Connector_RTMP(Socket::Connection conn){ | |||
|               break; | ||||
|             } | ||||
|             //not gotten init yet? cancel this tag
 | ||||
|             if (viddata.len == 0 || auddata.len == 0){break;} | ||||
|             if (tag.needsInitData()){ | ||||
|               if ((tag.data[0] == 0x09) && (viddata.len == 0)){break;} | ||||
|               if ((tag.data[0] == 0x08) && (auddata.len == 0)){break;} | ||||
|             } | ||||
|             //send tag normally
 | ||||
|             Socket.write(RTMPStream::SendMedia(tag)); | ||||
|             #if DEBUG >= 8 | ||||
|  |  | |||
|  | @ -495,3 +495,27 @@ bool Socket::Server::connected(){ | |||
| 
 | ||||
| /// Returns internal socket number.
 | ||||
| int Socket::Server::getSocket(){return sock;} | ||||
| 
 | ||||
| /// Unescapes URLencoded C-strings to a std::string.
 | ||||
| /// This function *will* destroy the incoming data!
 | ||||
| std::string Socket::Connection::urlunescape(char *s){ | ||||
|   char  *p; | ||||
|   for (p = s; *s != '\0'; ++s){ | ||||
|     if (*s == '%'){ | ||||
|       if (*++s != '\0'){ | ||||
|         *p = unhex(*s) << 4; | ||||
|       } | ||||
|       if (*++s != '\0'){ | ||||
|         *p++ += unhex(*s); | ||||
|       } | ||||
|     } else { | ||||
|       if (*s == '+'){*p++ = ' ';}else{*p++ = *s;} | ||||
|     } | ||||
|   } | ||||
|   *p = '\0'; | ||||
|   return std::string(s); | ||||
| } | ||||
| 
 | ||||
| int Socket::Connection::unhex(char c){ | ||||
|   return( c >= '0' && c <= '9' ? c - '0' : c >= 'A' && c <= 'F' ? c - 'A' + 10 : c - 'a' + 10 ); | ||||
| } | ||||
|  |  | |||
|  | @ -23,6 +23,7 @@ namespace Socket{ | |||
|     private: | ||||
|       int sock; ///< Internally saved socket number.
 | ||||
|       std::string remotehost; ///< Stores remote host address.
 | ||||
|       int unhex(char c); ///< Helper function for urlunescape.
 | ||||
|     public: | ||||
|       Connection(); ///< Create a new disconnected base socket.
 | ||||
|       Connection(int sockNo); ///< Create a new base socket.
 | ||||
|  | @ -44,6 +45,7 @@ namespace Socket{ | |||
|       bool swrite(std::string & buffer); ///< Read call that is compatible with std::string.
 | ||||
|       bool iread(std::string & buffer); ///< Incremental write call that is compatible with std::string.
 | ||||
|       bool iwrite(std::string & buffer); ///< Write call that is compatible with std::string.
 | ||||
|       std::string urlunescape(char *s); ///< Unescapes URLencoded C-strings to a std::string.
 | ||||
|       void close(); ///< Close connection.
 | ||||
|       std::string getHost(); ///< Gets hostname for connection, if available.
 | ||||
|       int getSocket(); ///< Returns internal socket number.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma