~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/catalog/engine.cc

edit

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#include <config.h>
 
21
#include "config.h"
22
22
 
23
23
#include <fcntl.h>
24
24
#include <sys/stat.h>
25
25
#include <sys/types.h>
26
26
 
27
 
#include <drizzled/display.h>
 
27
#include "drizzled/display.h"
28
28
#include <google/protobuf/io/zero_copy_stream.h>
29
29
#include <google/protobuf/io/zero_copy_stream_impl.h>
30
30
 
32
32
#include <fstream>
33
33
#include <string>
34
34
 
35
 
#include <drizzled/data_home.h>
36
 
#include <drizzled/cached_directory.h>
 
35
#include "drizzled/data_home.h"
 
36
#include "drizzled/cached_directory.h"
37
37
#include <drizzled/catalog/local.h>
38
 
#include <plugin/catalog/module.h>
 
38
#include "plugin/catalog/module.h"
39
39
 
40
40
namespace plugin {
41
41
namespace catalog {
92
92
  prime(messages);
93
93
}
94
94
 
95
 
drizzled::message::catalog::shared_ptr Engine::getMessage(drizzled::identifier::Catalog::const_reference identifier)
96
 
{
97
 
  if (drizzled::catalog::local_identifier() == identifier)
98
 
  {
99
 
    return drizzled::message::catalog::make_shared(identifier);
100
 
  }
101
 
 
102
 
  drizzled::message::catalog::shared_ptr message;
103
 
  if ((message= readFile(identifier)))
104
 
  {
105
 
    assert(message);
106
 
    return message;
107
 
  }
108
 
 
109
 
  return drizzled::message::catalog::shared_ptr();
110
 
}
111
 
 
112
95
void Engine::prime(drizzled::message::catalog::vector &messages)
113
96
{
114
97
  bool found_local= false;
127
110
 
128
111
    drizzled::identifier::Catalog identifier(entry->filename);
129
112
 
130
 
    if (message= readFile(identifier))
 
113
    if (readFile(identifier, message))
131
114
    {
132
115
      messages.push_back(message);
133
116
 
208
191
}
209
192
 
210
193
 
211
 
drizzled::message::catalog::shared_ptr Engine::readFile(drizzled::identifier::Catalog::const_reference identifier)
 
194
bool Engine::readFile(const drizzled::identifier::Catalog &identifier, drizzled::message::catalog::shared_ptr &message)
212
195
{
213
196
  std::string path(identifier.getPath());
214
197
 
223
206
 
224
207
  if (input.good())
225
208
  {
226
 
    drizzled::message::catalog::shared_ptr message= drizzled::message::catalog::make_shared(identifier);
227
 
 
228
 
    if (not message)
229
 
      return drizzled::message::catalog::shared_ptr();
230
 
 
231
 
 
 
209
    message= drizzled::message::catalog::make_shared(identifier);
232
210
    if (message->ParseFromIstream(&input))
233
211
    {
234
 
      return message;
 
212
      return true;
235
213
    }
236
214
 
237
215
    drizzled::my_error(drizzled::ER_CORRUPT_CATALOG_DEFINITION, MYF(0), path.c_str(),
242
220
    perror(path.c_str());
243
221
  }
244
222
 
245
 
  return drizzled::message::catalog::shared_ptr();
 
223
  return false;
246
224
}
247
225
 
248
226
} /* namespace catalog */