1 /*************************************************************************** 2 * * 3 * LinuxSampler - modular, streaming capable sampler * 4 * * 5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * 6 * Copyright (C) 2005 - 2008 Christian Schoenebeck * 7 * * 8 * This program is free software; you can redistribute it and/or modify * 9 * it under the terms of the GNU General Public License as published by * 10 * the Free Software Foundation; either version 2 of the License, or * 11 * (at your option) any later version. * 12 * * 13 * This program is distributed in the hope that it will be useful, * 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 16 * GNU General Public License for more details. * 17 * * 18 * You should have received a copy of the GNU General Public License * 19 * along with this program; if not, write to the Free Software * 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 21 * MA 02111-1307 USA * 22 ***************************************************************************/ 23 24 #ifndef __LSCPEVENT_H_ 25 #define __LSCPEVENT_H_ 26 #include <iostream> 27 #include <sstream> 28 #include <string> 29 #include <list> 30 #include "../Sampler.h" 31 #include "../common/global.h" 32 #include "../common/Exception.h" 33 34 namespace LinuxSampler { 35 36 /** 37 * Helper class for producing result sets 38 */ 39 class LSCPEvent { 40 public: 41 /** 42 * Event types 43 **/ 44 enum event_t { 45 event_audio_device_count, 46 event_audio_device_info, 47 event_midi_device_count, 48 event_midi_device_info, 49 event_channel_count, 50 event_voice_count, 51 event_stream_count, 52 event_buffer_fill, 53 event_channel_info, 54 event_fx_send_count, 55 event_fx_send_info, 56 event_midi_instr_map_count, 57 event_midi_instr_map_info, 58 event_midi_instr_count, 59 event_midi_instr_info, 60 event_db_instr_dir_count, 61 event_db_instr_dir_info, 62 event_db_instr_count, 63 event_db_instr_info, 64 event_db_instrs_job_info, 65 event_misc, 66 event_total_stream_count, 67 event_total_voice_count, 68 event_global_info, 69 event_channel_midi, 70 event_device_midi, 71 event_fx_instance_count, 72 event_fx_instance_info, 73 event_send_fx_chain_count, 74 event_send_fx_chain_info 75 }; 76 77 /* This constructor will do type lookup based on name 78 **/ 79 LSCPEvent(String eventName) throw (Exception); 80 81 /* These constructors are used to create event and fill it with data for sending 82 * These will be used by the thread that wants to send an event to all clients 83 * that are subscribed to it 84 **/ 85 LSCPEvent(event_t eventType, int uiData); 86 LSCPEvent(event_t eventType, String sData); 87 LSCPEvent(event_t eventType, int uiData1, int uiData2); 88 LSCPEvent(event_t eventType, int uiData1, int uiData2, String sData3, int uiData4, int uiData5); 89 LSCPEvent(event_t eventType, String sData, int uiData); 90 LSCPEvent(event_t eventType, String sData, double dData); 91 LSCPEvent(event_t eventType, int uiData, String sData); 92 LSCPEvent(event_t eventType, int uiData1, String sData2, int uiData3, int uiData4); 93 LSCPEvent(event_t eventType, int uiData1, int uiData2, int uiData3); 94 LSCPEvent(event_t eventType, String sData1, String sData2, String sData3); 95 String Produce( void ); 96 97 /* Returns event type */ GetType(void)98 event_t GetType( void ) { return type; } 99 100 /* These methods are used to registed and unregister an event */ 101 static void RegisterEvent(event_t eventType, String EventName); 102 static void UnregisterEvent(event_t eventType); 103 104 /* This method returns a name for events of a given type */ 105 static String Name(event_t eventType); 106 107 /* This method returs a list of all event types registered */ 108 static std::list<event_t> List( void ); 109 110 private: 111 String storage; 112 event_t type; 113 114 static std::map<event_t, String> EventNames; 115 }; 116 117 } 118 119 #endif // __LSCPEVENT_H_ 120