Unified all input types into a single flexible type
This commit is contained in:
		
							parent
							
								
									e352a2fc38
								
							
						
					
					
						commit
						ec240fb1af
					
				
					 4 changed files with 42 additions and 61 deletions
				
			
		|  | @ -322,7 +322,7 @@ makeInput(Buffer buffer) | ||||||
| makeInput(ISMV ismv)#LTS | makeInput(ISMV ismv)#LTS | ||||||
| makeInput(MP4 mp4)#LTS | makeInput(MP4 mp4)#LTS | ||||||
| makeInput(TS ts)#LTS | makeInput(TS ts)#LTS | ||||||
| makeInput(Folder folder folder)#LTS | makeInput(Folder folder)#LTS | ||||||
| 
 | 
 | ||||||
| ######################################## | ######################################## | ||||||
| # MistServer - Outputs                 # | # MistServer - Outputs                 # | ||||||
|  |  | ||||||
|  | @ -1,19 +1,52 @@ | ||||||
| #include <iostream> |  | ||||||
| #include <cstring> |  | ||||||
| #include <cerrno> |  | ||||||
| #include <cstdlib> |  | ||||||
| #include <cstdio> |  | ||||||
| #include <string> |  | ||||||
| #include <mist/stream.h> | #include <mist/stream.h> | ||||||
| #include <mist/defines.h> | #include <mist/defines.h> | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <sys/stat.h> | ||||||
|  | #include <unistd.h> | ||||||
| 
 | 
 | ||||||
| #include "input_folder.h" | #include "input_folder.h" | ||||||
| 
 | 
 | ||||||
| namespace Mist { | namespace Mist { | ||||||
|   inputFolder::inputFolder(Util::Config * cfg) : Input(cfg) { |   inputFolder::inputFolder(Util::Config * cfg) : Input(cfg) { | ||||||
|     capa["name"] = "Folder"; |     capa["name"] = "Folder"; | ||||||
|     capa["decs"] = "Folder input, re-starts itself as the appropiate input."; |     capa["desc"] = "Folder input, re-starts itself as the appropriate input."; | ||||||
|     capa["source_match"] = "/*/"; |     capa["source_match"] = "/*/"; | ||||||
|     capa["priority"] = 9ll; |     capa["priority"] = 9ll; | ||||||
|  |     capa["morphic"] = 1ll; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   int inputFolder::boot(int argc, char * argv[]){ | ||||||
|  |     if (!config->parseArgs(argc, argv)){return 1;} | ||||||
|  |     if (config->getBool("json")){return run();} | ||||||
|  |      | ||||||
|  |     streamName = config->getString("streamname"); | ||||||
|  |     if (streamName.find_first_of("+ ") == std::string::npos){ | ||||||
|  |       FAIL_MSG("Folder input requires a + or space in the stream name."); | ||||||
|  |       return 1; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     std::string folder = config->getString("input"); | ||||||
|  |     if (folder[folder.size() - 1] != '/'){ | ||||||
|  |       FAIL_MSG("Input path must end in a forward slash."); | ||||||
|  |       return 1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::string folder_noslash = folder.substr(0, folder.size() - 1); | ||||||
|  |     struct stat fileCheck; | ||||||
|  |     if (stat(folder_noslash.c_str(), &fileCheck) != 0 || !S_ISDIR(fileCheck.st_mode)){ | ||||||
|  |       FAIL_MSG("Folder input requires a folder as input."); | ||||||
|  |       return 1; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     std::string path = folder + streamName.substr(streamName.find_first_of("+ ")+1); | ||||||
|  |     if (stat(path.c_str(), &fileCheck) != 0 || S_ISDIR(fileCheck.st_mode)){ | ||||||
|  |       FAIL_MSG("File not found: %s", path.c_str()); | ||||||
|  |       return 1; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     Util::startInput(streamName, path, false); | ||||||
|  |     return 1; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ namespace Mist { | ||||||
|   class inputFolder : public Input { |   class inputFolder : public Input { | ||||||
|     public: |     public: | ||||||
|       inputFolder(Util::Config * cfg); |       inputFolder(Util::Config * cfg); | ||||||
|  |       int boot(int argc, char * argv[]); | ||||||
|     protected: |     protected: | ||||||
|       bool setup(){return false;}; |       bool setup(){return false;}; | ||||||
|       bool readHeader(){return false;}; |       bool readHeader(){return false;}; | ||||||
|  |  | ||||||
|  | @ -1,53 +0,0 @@ | ||||||
| #include <errno.h> |  | ||||||
| #include <sys/types.h> |  | ||||||
| #include <sys/stat.h> |  | ||||||
| #include <fcntl.h>  |  | ||||||
| #include <sys/wait.h> |  | ||||||
| #include <unistd.h> |  | ||||||
| #include <semaphore.h> |  | ||||||
| 
 |  | ||||||
| #include INPUTTYPE  |  | ||||||
| #include <mist/config.h> |  | ||||||
| #include <mist/defines.h> |  | ||||||
| #include <mist/stream.h> |  | ||||||
| 
 |  | ||||||
| int main(int argc, char * argv[]) { |  | ||||||
|   Util::Config conf(argv[0]); |  | ||||||
|   mistIn conv(&conf); |  | ||||||
|   if (conf.parseArgs(argc, argv)) { |  | ||||||
|     if (conf.getBool("json")) { |  | ||||||
|       conv.run(); |  | ||||||
|       return 0; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     std::string strm = conf.getString("streamname"); |  | ||||||
|     if (strm.find_first_of("+ ") == std::string::npos){ |  | ||||||
|       FAIL_MSG("Folder input requires a + or space in the stream name."); |  | ||||||
|       return 1; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     std::string folder = conf.getString("input"); |  | ||||||
|     if (folder[folder.size() - 1] != '/'){ |  | ||||||
|       FAIL_MSG("Input path must end in a forward slash."); |  | ||||||
|       return 1; |  | ||||||
|     } |  | ||||||
|     std::string folder_noslash = folder.substr(0, folder.size() - 1); |  | ||||||
|     struct stat fileCheck; |  | ||||||
|     if (stat(folder_noslash.c_str(), &fileCheck) != 0 || !S_ISDIR(fileCheck.st_mode)){ |  | ||||||
|       FAIL_MSG("Folder input requires a folder as input."); |  | ||||||
|       return 1; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     std::string path = folder + strm.substr(strm.find_first_of("+ ")+1); |  | ||||||
|     if (stat(path.c_str(), &fileCheck) != 0 || S_ISDIR(fileCheck.st_mode)){ |  | ||||||
|       FAIL_MSG("File not found: %s", path.c_str()); |  | ||||||
|       return 1; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     Util::startInput(strm, path, false); |  | ||||||
|     return 1; |  | ||||||
|   } |  | ||||||
|   return 1; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma