1 // Copyright (C) 2005 Nathaniel Smith <njs@pobox.com>
2 //
3 // This program is made available under the GNU GPL version 2.0 or
4 // greater. See the accompanying file COPYING for details.
5 //
6 // This program is distributed WITHOUT ANY WARRANTY; without even the
7 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE.
9 
10 #include "base.hh"
11 #include "epoch.hh"
12 #include "netio.hh"
13 #include "constants.hh"
14 #include "transforms.hh"
15 
16 
17 using std::string;
18 
19 void
read_epoch(string const & in,branch_name & branch,epoch_data & epoch)20 read_epoch(string const & in,
21            branch_name & branch, epoch_data & epoch)
22 {
23   size_t pos = 0;
24   string raw_branch;
25   data raw_epoch;
26   extract_variable_length_string(in, raw_branch, pos, "epoch, branch name");
27   raw_epoch = data(extract_substring(in, pos, constants::epochlen_bytes,
28                                      "epoch, epoch data"),
29                    origin::network);
30   branch = branch_name(raw_branch, origin::network);
31   epoch = epoch_data(raw_epoch);
32 }
33 
34 void
write_epoch(branch_name const & branch,epoch_data const & epoch,string & out)35 write_epoch(branch_name const & branch, epoch_data const & epoch,
36             string & out)
37 {
38   insert_variable_length_string(branch(), out);
39   out += epoch.inner()();
40 }
41 
42 void
epoch_hash_code(branch_name const & branch,epoch_data const & epoch,epoch_id & eid)43 epoch_hash_code(branch_name const & branch, epoch_data const & epoch,
44                 epoch_id & eid)
45 {
46   string tmp(branch() + ":" + encode_hexenc(epoch.inner()(),
47                                             epoch.inner().made_from));
48   data tdat(tmp, origin::internal);
49   id out;
50   calculate_ident(tdat, out);
51   eid = epoch_id(out);
52 }
53 
54 // Local Variables:
55 // mode: C++
56 // fill-column: 76
57 // c-file-style: "gnu"
58 // indent-tabs-mode: nil
59 // End:
60 // vim: et:sw=2:sts=2:ts=2:cino=>2s,{s,\:s,+s,t0,g0,^-2,e-2,n-2,p2s,(0,=s:
61