DriveConfigMap.cpp 2.55 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/******************************************************************************
 *
 * This file is part of the Castor project.
 * See http://castor.web.cern.ch/castor
 *
 * Copyright (C) 2003  CERN
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *
 *
 *
21
 * @author Castor Dev team, castor-dev@cern.ch
22
23
24
 *****************************************************************************/

#include "castor/exception/Exception.hpp"
25
#include "castor/tape/tapeserver/daemon/DriveConfigMap.hpp"
26
27
28
29

//------------------------------------------------------------------------------
// enterTpconfigLines
//------------------------------------------------------------------------------
30
void castor::tape::tapeserver::daemon::DriveConfigMap::enterTpconfigLines(
31
32
33
34
35
36
37
38
39
40
  const TpconfigLines &lines) {
  for(TpconfigLines::const_iterator itor = lines.begin();
    itor != lines.end(); itor++) {
    enterTpconfigLine(*itor);
  }
}

//------------------------------------------------------------------------------
// enterTpconfigLine
//------------------------------------------------------------------------------
41
void castor::tape::tapeserver::daemon::DriveConfigMap::enterTpconfigLine(
42
  const TpconfigLine &line) {
43
44
45
  try {
    // Try to find the drive within the map
    DriveConfigMap::iterator itor = find(line.unitName);
46

47
48
    // Enforce one TPCONFIG line per drive
    if(end() != itor) {
49
50
      castor::exception::Exception ex;
      ex.getMessage() << "Invalid TPCONFIG line"
51
52
        ": There should only be one TPCONFIG line per tape drive: unitName=" <<
        line.unitName;
53
54
55
      throw ex;
    }

56
    // Insert the drive
57
58
    (*this)[line.unitName] = DriveConfig(
      line.unitName,
59
      line.logicalLibrary,
60
61
      line.devFilename,
      line.librarySlot);
62
  } catch(castor::exception::Exception &ne) {
63
    castor::exception::Exception ex;
64
65
    ex.getMessage() << "Failed to enter TPCONFIG line into drive map: " <<
      ne.getMessage().str();
66
67
68
    throw ex;
  }
}