void LogObject(object data) { lock (_fspLock) { if (_state.Log && _fileStorePort != null) { _fileStorePort.Post(new fs.WriteObject(data)); } } }
void OnLogSettingHandler(OnLogSetting onLogSetting) { _state.Log = onLogSetting.Log; _state.LogFile = onLogSetting.File; if (_state.Log) { try { Uri file = new Uri(_state.LogFile); fs.FileStoreCreate fsCreate = new fs.FileStoreCreate(file, new fs.FileStorePort()); FileStoreConstructorPort.Post(fsCreate); Activate( Arbiter.Choice( fsCreate.ResultPort, delegate(fs.FileStorePort fsp) { LogInfo("Started Logging"); lock (_fspLock) { _fileStorePort = fsp; } }, delegate(Exception ex) { WinFormsServicePort.FormInvoke(delegate() { _driveControl.ErrorLogging(ex); } ); } ) ); } catch (Exception e) { WinFormsServicePort.FormInvoke(delegate() { _driveControl.ErrorLogging(e); } ); } } else if (_fileStorePort != null) { LogInfo("Stop Logging"); lock (_fspLock) { fs.FileStorePort fsp = _fileStorePort; LogInfo("Flush Log"); fsp.Post(new fs.Flush()); Activate( Arbiter.Receive(false, TimeoutPort(1000), delegate(DateTime signal) { LogInfo("Stop Log"); fsp.Post(new Shutdown()); } ) ); _fileStorePort = null; } } }