Go to the source code of this file.
Functions | |
static void | usage (const char *progname) |
Pre-reads stuff written by ccnsendchunks, produces no output This is meant to be run in parallel with ccncatchunks to experiment with the benefits of one kind of pipelining. | |
static void | append_bloom_element (struct ccn_charbuf *templ, enum ccn_dtag dtag, struct ccn_bloom *b) |
static void | append_bf_all (struct ccn_charbuf *c) |
static struct ccn_bloom * | make_partition (unsigned i, int lg_n) |
struct ccn_charbuf * | make_template (struct mydata *md, struct ccn_upcall_info *info, struct ccn_bloom *b) |
static enum ccn_upcall_res | incoming_content (struct ccn_closure *selfp, enum ccn_upcall_kind kind, struct ccn_upcall_info *info) |
int | main (int argc, char **argv) |
A CCNx command-line utility.
Copyright (C) 2008-2011 Palo Alto Research Center, Inc.
This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This work 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Definition in file ccnbuzz.c.
static void append_bf_all | ( | struct ccn_charbuf * | c | ) | [static] |
static void append_bloom_element | ( | struct ccn_charbuf * | templ, | |
enum ccn_dtag | dtag, | |||
struct ccn_bloom * | b | |||
) | [static] |
static enum ccn_upcall_res incoming_content | ( | struct ccn_closure * | selfp, | |
enum ccn_upcall_kind | kind, | |||
struct ccn_upcall_info * | info | |||
) | [static] |
static struct ccn_bloom* make_partition | ( | unsigned | i, | |
int | lg_n | |||
) | [static, read] |
struct ccn_charbuf* make_template | ( | struct mydata * | md, | |
struct ccn_upcall_info * | info, | |||
struct ccn_bloom * | b | |||
) | [read] |
Definition at line 125 of file ccnbuzz.c.
Referenced by ask_more(), fill_holes(), incoming_content(), and main().
static void usage | ( | const char * | progname | ) | [static] |
Pre-reads stuff written by ccnsendchunks, produces no output This is meant to be run in parallel with ccncatchunks to experiment with the benefits of one kind of pipelining.
The idea is to use the Exclude Bloom filters to artificially divide the possible interests into several different classes. For example, you might use 8 bits per Bloom filter, and just one hash function, so the 8 different filters B0 = 01111111 B1 = 10111111 ... B8 = 11111110 will serve to partition the interests into 8 different classes and so at any given time and node there can be 8 different pending interests for the prefix. When a piece of content arrives at the endpoint, a new interest is issued that uses the same Bloom filter, but is restricted to content with a larger sequence number than the content that just arrived. The "real" consumer gets its content by explicitly using the sequence numbers in its requests; almost all of these will get fulfilled out of a nearby cache and so few of the actual interests will need to propagate out to the network. Note that this scheme does not need to be aware of the sequence numbering algorithm; it only relies on them to be increasing according to the canonical ordering.