/[svn]/linuxsampler/trunk/src/network/lscpserver.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/network/lscpserver.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1525 by schoenebeck, Sun Nov 25 17:47:46 2007 UTC revision 1535 by iliev, Mon Dec 3 13:59:03 2007 UTC
# Line 2384  String LSCPServer::SetGlobalVolume(doubl Line 2384  String LSCPServer::SetGlobalVolume(doubl
2384  }  }
2385    
2386  String LSCPServer::GetFileInstruments(String Filename) {  String LSCPServer::GetFileInstruments(String Filename) {
2387        dmsg(2,("LSCPServer: GetFileInstruments(String Filename=%s)\n",Filename.c_str()));
2388      LSCPResultSet result;      LSCPResultSet result;
2389        try {
2390            VerifyFile(Filename);
2391        } catch (Exception e) {
2392            result.Error(e);
2393            return result.Produce();
2394        }
2395      // try to find a sampler engine that can handle the file      // try to find a sampler engine that can handle the file
2396      bool bFound = false;      bool bFound = false;
2397      std::vector<String> engineTypes = EngineFactory::AvailableEngineTypes();      std::vector<String> engineTypes = EngineFactory::AvailableEngineTypes();
# Line 2407  String LSCPServer::GetFileInstruments(St Line 2414  String LSCPServer::GetFileInstruments(St
2414          }          }
2415          if (pEngine) EngineFactory::Destroy(pEngine);          if (pEngine) EngineFactory::Destroy(pEngine);
2416      }      }
2417    
2418        if (!bFound) result.Error("Unknown file format");
2419      return result.Produce();      return result.Produce();
2420  }  }
2421    
2422  String LSCPServer::ListFileInstruments(String Filename) {  String LSCPServer::ListFileInstruments(String Filename) {
2423        dmsg(2,("LSCPServer: ListFileInstruments(String Filename=%s)\n",Filename.c_str()));
2424      LSCPResultSet result;      LSCPResultSet result;
2425        try {
2426            VerifyFile(Filename);
2427        } catch (Exception e) {
2428            result.Error(e);
2429            return result.Produce();
2430        }
2431      // try to find a sampler engine that can handle the file      // try to find a sampler engine that can handle the file
2432      bool bFound = false;      bool bFound = false;
2433      std::vector<String> engineTypes = EngineFactory::AvailableEngineTypes();      std::vector<String> engineTypes = EngineFactory::AvailableEngineTypes();
# Line 2439  String LSCPServer::ListFileInstruments(S Line 2455  String LSCPServer::ListFileInstruments(S
2455          }          }
2456          if (pEngine) EngineFactory::Destroy(pEngine);          if (pEngine) EngineFactory::Destroy(pEngine);
2457      }      }
2458    
2459        if (!bFound) result.Error("Unknown file format");
2460      return result.Produce();      return result.Produce();
2461  }  }
2462    
2463  String LSCPServer::GetFileInstrumentInfo(String Filename, uint InstrumentID) {  String LSCPServer::GetFileInstrumentInfo(String Filename, uint InstrumentID) {
2464        dmsg(2,("LSCPServer: GetFileInstrumentInfo(String Filename=%s, InstrumentID=%d)\n",Filename.c_str(),InstrumentID));
2465      LSCPResultSet result;      LSCPResultSet result;
2466        try {
2467            VerifyFile(Filename);
2468        } catch (Exception e) {
2469            result.Error(e);
2470            return result.Produce();
2471        }
2472      InstrumentManager::instrument_id_t id;      InstrumentManager::instrument_id_t id;
2473      id.FileName = Filename;      id.FileName = Filename;
2474      id.Index    = InstrumentID;      id.Index    = InstrumentID;
# Line 2461  String LSCPServer::GetFileInstrumentInfo Line 2486  String LSCPServer::GetFileInstrumentInfo
2486                      pManager->GetInstrumentInfo(id);                      pManager->GetInstrumentInfo(id);
2487                  // return detailed informations about the file                  // return detailed informations about the file
2488                  result.Add("NAME", info.InstrumentName);                  result.Add("NAME", info.InstrumentName);
2489                  result.Add("FORMAT_NAME", engineTypes[i]);                  result.Add("FORMAT_FAMILY", engineTypes[i]);
2490                  result.Add("FORMAT_VERSION", info.FormatVersion);                  result.Add("FORMAT_VERSION", info.FormatVersion);
2491                  result.Add("PRODUCT", info.Product);                  result.Add("PRODUCT", info.Product);
2492                  result.Add("ARTISTS", info.Artists);                  result.Add("ARTISTS", info.Artists);
# Line 2473  String LSCPServer::GetFileInstrumentInfo Line 2498  String LSCPServer::GetFileInstrumentInfo
2498          }          }
2499          if (pEngine) EngineFactory::Destroy(pEngine);          if (pEngine) EngineFactory::Destroy(pEngine);
2500      }      }
2501    
2502        if (!bFound) result.Error("Unknown file format");
2503      return result.Produce();      return result.Produce();
2504  }  }
2505    
2506    void LSCPServer::VerifyFile(String Filename) {
2507        struct stat statBuf;
2508        int res = stat(Filename.c_str(), &statBuf);
2509        if (res) {
2510            std::stringstream ss;
2511            ss << "Fail to stat `" << Filename << "`: " << strerror(errno);
2512            throw Exception(ss.str());
2513        }
2514    
2515        if (S_ISDIR(statBuf.st_mode)) {
2516            throw Exception("Directory is specified");
2517        }
2518    }
2519    
2520  /**  /**
2521   * Will be called by the parser to subscribe a client (frontend) on the   * Will be called by the parser to subscribe a client (frontend) on the
2522   * server for receiving event messages.   * server for receiving event messages.

Legend:
Removed from v.1525  
changed lines
  Added in v.1535

  ViewVC Help
Powered by ViewVC