1 /* 2 * Copyright 2016, Rene Gollent, rene@gollent.com. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 #include "Jobs.h" 7 8 #include <Path.h> 9 10 #include <AutoLocker.h> 11 12 #include "DebuggerInterface.h" 13 #include "Team.h" 14 15 16 17 WriteCoreFileJob::WriteCoreFileJob(Team* team, 18 DebuggerInterface* interface, const entry_ref& path) 19 : 20 fKey(&path, JOB_TYPE_WRITE_CORE_FILE), 21 fTeam(team), 22 fDebuggerInterface(interface), 23 fTargetPath(path) 24 { 25 fDebuggerInterface->AcquireReference(); 26 } 27 28 29 WriteCoreFileJob::~WriteCoreFileJob() 30 { 31 fDebuggerInterface->AcquireReference(); 32 } 33 34 35 const JobKey& 36 WriteCoreFileJob::Key() const 37 { 38 return fKey; 39 } 40 41 42 status_t 43 WriteCoreFileJob::Do() 44 { 45 BPath path(&fTargetPath); 46 status_t error = path.InitCheck(); 47 if (error != B_OK) 48 return error; 49 50 error = fDebuggerInterface->WriteCoreFile(path.Path()); 51 if (error != B_OK) 52 return error; 53 54 AutoLocker< ::Team> teamLocker(fTeam); 55 fTeam->NotifyCoreFileChanged(path.Path()); 56 57 return B_OK; 58 } 59