blob: be1eacc9e5f6979420e0eb180d7cd743a35d04e5 [file] [log] [blame]
Alexander Afanasyev5ba90362013-07-15 19:58:38 -07001## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2#
3# Copyright (c) 2011-2013, Regents of the University of California
4# Alexander Afanasyev
5#
6# GNU 3.0 license, See the LICENSE file for more information
7#
8# Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
9#
10
11#
12# Based on PyCCN code, copyrighted and licensed as follows
13#
14# Copyright (c) 2011-2013, Regents of the University of California
15# BSD license, See the COPYING file for more information
16# Written by: Derek Kulinski <takeda@takeda.tk>
17# Jeff Burke <jburke@ucla.edu>
18#
19
Alexander Afanasyev7d0a61d2013-07-17 17:33:05 -070020import ns.ndnSIM
21import ns.core
Alexander Afanasyev39f53162013-07-18 16:24:31 -070022from Name import Name
Alexander Afanasyev5ba90362013-07-15 19:58:38 -070023
Alexander Afanasyev76b11572013-07-16 21:49:50 -070024class Interest (object):
Alexander Afanasyev7d0a61d2013-07-17 17:33:05 -070025 _interest = None
26
Alexander Afanasyev39f53162013-07-18 16:24:31 -070027 def __init__(self,
28 name = None, scope = None, interestLifetime = None,
29 interest = None):
30 if interest:
31 if type (interest) is Interest:
32 self._interest = interest._interest
33 elif type (interest) is ns.ndnSIM.ndn.Interest:
34 self._interest = interest
35 else:
36 raise TypeError ("Invalid type supplied for 'interest' parameter [%s]" % type (interest))
37 else:
38 self._interest = ns.ndnSIM.ndn.Interest ()
Alexander Afanasyev5ba90362013-07-15 19:58:38 -070039
Alexander Afanasyev39f53162013-07-18 16:24:31 -070040 self.name = name
41 self.scope = scope
42 self.interestLifetime = interestLifetime
Alexander Afanasyev5ba90362013-07-15 19:58:38 -070043
Alexander Afanasyev7d0a61d2013-07-17 17:33:05 -070044 def __getattr__ (self, name):
45 if name == "name":
46 return Name (self._interest.GetName ())
47 elif name == "scope":
48 return self._interest.GetScope ()
49 elif name == "interestLifetime":
50 return self._interest.GetInterestLifetime ().ToDouble (ns.core.Time.S)
51 else:
52 return self._interest.__getattribute__ (name)
Alexander Afanasyev5ba90362013-07-15 19:58:38 -070053
54 def __setattr__(self, name, value):
Alexander Afanasyev7d0a61d2013-07-17 17:33:05 -070055 if name == "_interest":
56 return object.__setattr__ (self, name, value)
57 elif name == "name":
58 if not value:
59 return self._interest.SetName (ns.ndnSIM.ndn.Name ())
60 elif type (value) is Name:
61 return self._interest.SetName (value._name)
62 elif type (value) is ns.ndnSIM.ndn.Name:
63 return self._interest.SetName (value)
64 elif type (value) is str:
65 return self._interest.SetName (ns.ndnSIM.ndn.Name (value))
66 else:
67 raise ValueError ("Invalid name parameter")
68 elif name == "scope":
69 if not value:
70 return self._interest.SetScope (-1)
71 elif type (value) is int:
72 return self._interest.SetScope (value)
73 else:
74 raise ValueError ("Scope parameter should be int, [%s] supplied" % type (value))
75 elif name == "interestLifetime":
76 if not value:
77 return self._interest.SetInterestLifetime (ns.core.Time ())
78 elif type (value) is float or type (value) is int:
79 return self._interest.SetInterestLifetime (ns.core.Seconds (value))
80 else:
81 raise ValueError ("interestLifetime parameter should be fload or int, [%s] supplied" % type (value))
82 else:
83 raise ValueError ("Unknown or unsupported attribute [%s]" % name)
Alexander Afanasyev5ba90362013-07-15 19:58:38 -070084
85 def __repr__(self):
Alexander Afanasyev7d0a61d2013-07-17 17:33:05 -070086 return "ndnSIM.Interest(%s)" % str (self._interest)