blob: 57c340f48f3d371cf6f4e594bfe26823555129d2 [file] [log] [blame]
Jeff Thompson47eecfc2013-07-07 22:56:46 -07001/**
2 * @author: Jeff Thompson
3 * See COPYING for copyright and distribution information.
Jeff Thompsonb7f95562013-07-03 18:36:42 -07004 */
5
6#ifndef NDN_INTEREST_H
7#define NDN_INTEREST_H
8
9#include "Name.h"
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
Jeff Thompsonba70f8c2013-07-08 15:34:20 -070015enum {
16 ndn_Interest_CHILD_SELECTOR_LEFT = 0,
17 ndn_Interest_CHILD_SELECTOR_RIGHT = 1,
18 ndn_Interest_ANSWER_CONTENT_STORE = 1,
19 ndn_Interest_ANSWER_GENERATED = 2,
20 ndn_Interest_ANSWER_STALE = 4, // Stale answer OK
21 ndn_Interest_MARK_STALE = 16, // Must have scope 0. Michael calls this a "hack"
22
23 ndn_Interest_DEFAULT_ANSWER_ORIGIN_KIND = ndn_Interest_ANSWER_CONTENT_STORE | ndn_Interest_ANSWER_GENERATED
24};
25
Jeff Thompsonb7f95562013-07-03 18:36:42 -070026struct ndn_Interest {
27 struct ndn_Name name;
Jeff Thompsonb7f95562013-07-03 18:36:42 -070028 int minSuffixComponents; /**< -1 for none */
Jeff Thompsonf2e5e282013-07-08 15:26:16 -070029 int maxSuffixComponents; /**< -1 for none */
Jeff Thompsonb7f95562013-07-03 18:36:42 -070030 unsigned char *publisherPublicKeyDigest; /**< pointer to pre-allocated buffer. 0 for none */
Jeff Thompson88ab5dd2013-07-07 20:47:46 -070031 unsigned int publisherPublicKeyDigestLength; /**< length of publisherPublicKeyDigest. 0 for none */
Jeff Thompsonb7f95562013-07-03 18:36:42 -070032 // TODO: implement exclude
33 int childSelector; /**< -1 for none */
34 int answerOriginKind; /**< -1 for none */
35 int scope; /**< -1 for none */
36 int interestLifetime; /**< milliseconds. -1 for none */
37 unsigned char *nonce; /**< pointer to pre-allocated buffer. 0 for none */
Jeff Thompson88ab5dd2013-07-07 20:47:46 -070038 unsigned int nonceLength; /**< length of nonce. 0 for none */
Jeff Thompsonb7f95562013-07-03 18:36:42 -070039};
40
41static inline void ndn_Interest_init(struct ndn_Interest *self, struct ndn_NameComponent *nameComponents, unsigned int maxNameComponents)
42{
43 ndn_Name_init(&self->name, nameComponents, maxNameComponents);
Jeff Thompsonb7f95562013-07-03 18:36:42 -070044 self->minSuffixComponents = -1;
Jeff Thompsonf2e5e282013-07-08 15:26:16 -070045 self->maxSuffixComponents = -1;
Jeff Thompsonb7f95562013-07-03 18:36:42 -070046 self->publisherPublicKeyDigest = 0;
Jeff Thompson462618c2013-07-08 15:22:15 -070047 self->publisherPublicKeyDigestLength = 0;
Jeff Thompsonb7f95562013-07-03 18:36:42 -070048 // TODO: implement exclude
49 self->childSelector = -1;
50 self->answerOriginKind = -1;
51 self->scope = -1;
52 self->interestLifetime = -1;
Jeff Thompson462618c2013-07-08 15:22:15 -070053 self->nonce = 0;
54 self->nonceLength = 0;
Jeff Thompsonb7f95562013-07-03 18:36:42 -070055}
56
57#ifdef __cplusplus
58}
59#endif
60
61#endif
62