-
Notifications
You must be signed in to change notification settings - Fork 7
/
scannable.cc
54 lines (44 loc) · 928 Bytes
/
scannable.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* Copyright (c) 2011 Akamai Technologies, Inc. */
#include "system.hh"
#include "cgen.h"
#include "encode.h"
#include "decode.h"
#include "traversal.h"
#include "scanner_mode.h"
#include "scanner.h"
#include "scannable.h"
Scannable::Scannable()
:
inited_(false),
destroyed_(false),
data_len_(0)
{}
Scannable::~Scannable()
{
if (inited_ && !destroyed_)
{
PERROR("einval-destructing-live-scannable");
}
}
int Scannable::Init(Traversal* traversal,
void* traversal_datum,
uint64_t data_len)
{
CHK(traversal == NULL, "invalid traversal", out_error);
traversal_ = traversal;
CHK(data_len == 0, "zero-length scannable", out_error);
data_len_ = data_len;
traversal_datum_ = traversal_datum;
inited_ = true;
return 0;
out_error:
return 1;
}
int Scannable::get_quoted_path(string* s)
{
return traversal_->get_quoted_path(traversal_datum_, s);
}
uint64_t Scannable::data_len() const
{
return data_len_;
}