public void SetDefaultIncomingEventProcessor(HaywireStartUpMode mode) { //TODO Change this to use MEF to load processors switch (mode) { case HaywireStartUpMode.Default: #if (DEBUG) //If a debug release then use the debug processor, otherwise fall through and use the normal one ProcessEventDelegate = DebugProcessIncomingEvent; break; #endif case HaywireStartUpMode.Normal: ProcessEventDelegate = NormalProcessIncomingEvent; break; case HaywireStartUpMode.Debug: ProcessEventDelegate = DebugProcessIncomingEvent; break; case HaywireStartUpMode.PerformanceTest: ProcessEventDelegate = PerformanceTestProcessIncomingEvent; break; } }
private void SetDefaultIncomingEventProcessor(HaywireStartUpMode mode) { ProcessEventDelegate = SubscribedProcessIncomingEvent; ProcessEventDelegates.Add(MessageType.Default, ProcessIncomingEventDoNothing); return; //TODO Change this to use MEF to load processors switch (mode) { case HaywireStartUpMode.Default: #if (DEBUG) //If a debug release then use the debug processor, otherwise fall through and use the normal one ProcessEventDelegate = DebugProcessIncomingEvent; break; #endif case HaywireStartUpMode.Normal: ProcessEventDelegate = NormalProcessIncomingEvent; break; case HaywireStartUpMode.Debug: ProcessEventDelegate = DebugProcessIncomingEvent; break; case HaywireStartUpMode.PerformanceTest: ProcessEventDelegate = PerformanceTestProcessIncomingEvent; break; } }
static void Main(string[] args) { Mutex shutDownSynchMutex = new Mutex(false, "haywireShutDownSyncMutex"); String filename = HaywireBridge.DefaultMemorymappedFileName; HaywireStartUpMode startUpMode = HaywireStartUpMode.Default; if (args.Any()) { filename = args[0]; Enum.TryParse(args[1], true, out startUpMode); } using (HaywireBridge hb1 = new HaywireBridge(filename, startUpMode)) { try { Console.WriteLine("Minion Runner Started running HaywireBridge version {0}", hb1.Version); //Mutex used to close minion app when a parent debug app is closed shutDownSynchMutex.WaitOne(); shutDownSynchMutex.ReleaseMutex(); } catch (AbandonedMutexException) { //swallow Console.WriteLine("Shutting Down"); } } }
//Implement IOWIN //Event loop //Read string back // pseudo GC ring buffer (bonus: grow and shrink) //serialize dictionary //Stream //Create one memmap with access wrapped in a global mutex to write/read init coms to public HaywireBridge(String fileName = null, HaywireStartUpMode mode = HaywireStartUpMode.Default, MemoryMappedFileSecurity customSecurity = null) { SetDefaultIncomingEventProcessor(mode); SetMemoryMappedFileName(fileName); SetupMemoryMappedFileSecurity(customSecurity); SetupMemoryMappedFiles(customSecurity); _eventLoaderUnloader = new EventLoaderUnloader(this); _eventSpinners = new EventSpinners(this); SetupAddEventToQueueDelegate(); }