Class: Cul::Handles::HandleValue

Inherits:
Object
  • Object
show all
Includes:
Hdl
Defined in:
lib/cul/handles/resolution_response.rb

Constant Summary collapse

PERM_ADMIN_READ =
0x8
PERM_ADMIN_WRITE =
0x4
PERM_PUBLIC_READ =
0x2
PERM_PUBLIC_WRITE =
0x1
TTL_TYPE_RELATIVE =
0
TTL_TYPE_ABSOLUTE =
1
MAX_RECOGNIZED_TTL =

2 days

86400*2

Constants included from Hdl

Cul::Handles::Hdl::ENV_FLAG_COMPRESSED, Cul::Handles::Hdl::ENV_FLAG_ENCRYPTED, Cul::Handles::Hdl::ENV_FLAG_TRUNCATED, Cul::Handles::Hdl::INDEX_ADMIN_HANDLE, Cul::Handles::Hdl::INDEX_AUTH, Cul::Handles::Hdl::INDEX_MAINTAINER_HANDLE, Cul::Handles::Hdl::MSG_FLAG_AUTH, Cul::Handles::Hdl::MSG_FLAG_AUTH_INDEX, Cul::Handles::Hdl::MSG_FLAG_CACR, Cul::Handles::Hdl::MSG_FLAG_CACR_INDEX, Cul::Handles::Hdl::MSG_FLAG_CERT, Cul::Handles::Hdl::MSG_FLAG_CERT_INDEX, Cul::Handles::Hdl::MSG_FLAG_CONT, Cul::Handles::Hdl::MSG_FLAG_CONT_INDEX, Cul::Handles::Hdl::MSG_FLAG_ENCR, Cul::Handles::Hdl::MSG_FLAG_ENCR_INDEX, Cul::Handles::Hdl::MSG_FLAG_KPAL, Cul::Handles::Hdl::MSG_FLAG_KPAL_INDEX, Cul::Handles::Hdl::MSG_FLAG_PUBL, Cul::Handles::Hdl::MSG_FLAG_PUBL_INDEX, Cul::Handles::Hdl::MSG_FLAG_RECU, Cul::Handles::Hdl::MSG_FLAG_RECU_INDEX, Cul::Handles::Hdl::MSG_FLAG_RRDG, Cul::Handles::Hdl::MSG_FLAG_RRDG_INDEX, Cul::Handles::Hdl::OC_ADD_VALUE, Cul::Handles::Hdl::OC_CHALLENGE_RESPONSE, Cul::Handles::Hdl::OC_CREATE_HANDLE, Cul::Handles::Hdl::OC_DELETE_HANDLE, Cul::Handles::Hdl::OC_GET_SITEINFO, Cul::Handles::Hdl::OC_LIST_HANDLE, Cul::Handles::Hdl::OC_LIST_NA, Cul::Handles::Hdl::OC_MODIFY_VALUE, Cul::Handles::Hdl::OC_REMOVE_VALUE, Cul::Handles::Hdl::OC_RESERVED, Cul::Handles::Hdl::OC_RESOLUTION, Cul::Handles::Hdl::OC_SESSION_EXCHANGEKEY, Cul::Handles::Hdl::OC_SESSION_SETUP, Cul::Handles::Hdl::OC_SESSION_TERMINATE, Cul::Handles::Hdl::OC_VERIFY_RESPONSE, Cul::Handles::Hdl::PERM_ADD_ADMIN, Cul::Handles::Hdl::PERM_ADD_HANDLE, Cul::Handles::Hdl::PERM_ADD_NA, Cul::Handles::Hdl::PERM_ADD_VALUE, Cul::Handles::Hdl::PERM_ALL, Cul::Handles::Hdl::PERM_DELETE_HANDLE, Cul::Handles::Hdl::PERM_DELETE_NA, Cul::Handles::Hdl::PERM_LIST_HDLS, Cul::Handles::Hdl::PERM_MODIFY_ADMIN, Cul::Handles::Hdl::PERM_MODIFY_VALUE, Cul::Handles::Hdl::PERM_READ_VALUE, Cul::Handles::Hdl::PERM_REMOVE_ADMIN, Cul::Handles::Hdl::PERM_REMOVE_VALUE, Cul::Handles::Hdl::RC_ACCESS_DENIED, Cul::Handles::Hdl::RC_AUTHEN_FAILED, Cul::Handles::Hdl::RC_AUTHEN_NEEDED, Cul::Handles::Hdl::RC_AUTHEN_TIMEOUT, Cul::Handles::Hdl::RC_ERROR, Cul::Handles::Hdl::RC_EXPIRED_SITE_INFO, Cul::Handles::Hdl::RC_FORWARDED, Cul::Handles::Hdl::RC_HANDLE_ALREADY_EXIST, Cul::Handles::Hdl::RC_HANDLE_NOT_FOUND, Cul::Handles::Hdl::RC_INVALID_CREDENTIAL, Cul::Handles::Hdl::RC_INVALID_HANDLE, Cul::Handles::Hdl::RC_NA_DELEGATE, Cul::Handles::Hdl::RC_NOT_AUTHORIZED, Cul::Handles::Hdl::RC_NO_SESSION_KEY, Cul::Handles::Hdl::RC_OPERATION_DENIED, Cul::Handles::Hdl::RC_PROTOCOL_ERROR, Cul::Handles::Hdl::RC_QUEUED, Cul::Handles::Hdl::RC_RECUR_LIMIT_EXCEEDED, Cul::Handles::Hdl::RC_RESERVED, Cul::Handles::Hdl::RC_SERVER_BUSY, Cul::Handles::Hdl::RC_SERVER_NOT_RESP, Cul::Handles::Hdl::RC_SERVICE_REFERRAL, Cul::Handles::Hdl::RC_SESSION_FAILED, Cul::Handles::Hdl::RC_SESSION_KEY_INVALID, Cul::Handles::Hdl::RC_SESSION_NO_SUPPORT, Cul::Handles::Hdl::RC_SESSION_TIMEOUT, Cul::Handles::Hdl::RC_SUCCESS, Cul::Handles::Hdl::RC_TRYING, Cul::Handles::Hdl::RC_UNABLE_TO_AUTHEN, Cul::Handles::Hdl::RC_VALUE_ALREADY_EXIST, Cul::Handles::Hdl::RC_VALUE_INVALID, Cul::Handles::Hdl::RC_VALUE_NOT_FOUND

Instance Method Summary collapse

Methods included from Hdl

#asBytes, #calculateValueLen, #convert16t8, #decodeAdminData, #encodeAdminData, #fromBytes, #readByteArray, #readIntArray, #readProtocolString, #toProtocolString

Constructor Details

#initialize(data = [], handle = "") ⇒ HandleValue

Returns a new instance of HandleValue.



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/cul/handles/resolution_response.rb', line 57

def initialize(data=[],handle="")
  super()
  @handle=handle
  @refs = []
  @data = []
  @type = []
  @perm = 14 # admin r/w; public r
  @ttlType = TTL_TYPE_RELATIVE # default
  @ttl = asBytes(86400) # default is 86400 seconds = 1440 minutes = 24 hours
  @timestamp = asBytes(Time.new().to_i) # number of seconds since computing era
  deserialize(data) unless data.length == 0
end

Instance Method Details

#adminReadObject



130
131
132
# File 'lib/cul/handles/resolution_response.rb', line 130

def adminRead
  @perm & PERM_ADMIN_READ
end

#adminWriteObject



133
134
135
# File 'lib/cul/handles/resolution_response.rb', line 133

def adminWrite
  @perm & PERM_ADMIN_WRITE
end

#dataObject



151
152
153
# File 'lib/cul/handles/resolution_response.rb', line 151

def data
  @data.pack('U*')
end

#data=(val) ⇒ Object



148
149
150
# File 'lib/cul/handles/resolution_response.rb', line 148

def data=(val)
  @data=val
end

#deserialize(data) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/cul/handles/resolution_response.rb', line 69

def deserialize(data)
  @index = data[0..3]
  @timestamp = data[4..7]
  @ttlType = data[8]
  @ttl = data[9..12]
  @perm = data[13]
  typeLen = fromBytes(data[14..17])
  offset = 18
  @type = data[18...18+typeLen]
  offset = offset + typeLen
  dataLen = fromBytes(data[offset...offset+4])
  offset = offset + 4
  @data = data[offset...offset+dataLen]
  offset = offset + dataLen
  refsLen = fromBytes(data[offset...offset+4])
  offset = offset + 4
  @refs = []    
  (1..refsLen).each{
    @refs.push(fromBytes(data[offset...offset+4]))
    offset = offset + 4  
  }
end

#handleObject



109
110
111
# File 'lib/cul/handles/resolution_response.rb', line 109

def handle
  @handle
end

#indexObject



115
116
117
# File 'lib/cul/handles/resolution_response.rb', line 115

def index
  fromBytes(@index)
end

#index=(val) ⇒ Object



112
113
114
# File 'lib/cul/handles/resolution_response.rb', line 112

def index=(val)
  @index= val
end

#perm=(val) ⇒ Object



127
128
129
# File 'lib/cul/handles/resolution_response.rb', line 127

def perm=(val)
  @perm = val
end

#publicReadObject



136
137
138
# File 'lib/cul/handles/resolution_response.rb', line 136

def publicRead
  @perm & PERM_PUBLIC_READ
end

#publicWriteObject



139
140
141
# File 'lib/cul/handles/resolution_response.rb', line 139

def publicWrite
  @perm & PERM_PUBLIC_WRITE
end

#refs=(val) ⇒ Object



154
155
156
# File 'lib/cul/handles/resolution_response.rb', line 154

def refs=(val)
  @refs = val  
end

#serializeObject



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/cul/handles/resolution_response.rb', line 91

def serialize()
  result = [].concat(@index)
  result.concat(@timestamp)
  result.concat([@ttlType])
  result.concat(@ttl)
  result.concat([@perm])
  result.concat(asBytes(@type.length))
  result.concat(@type)
  result.concat(asBytes(@data.length))
  result.concat(@data)
  result.concat(asBytes(@refs.length))
  if(@refs.length > 0)
    @refs.each{ | ref|
      result.concat(asBytes(ref))
    }
  end
  return result
end

#timestamp=(val) ⇒ Object



118
119
120
# File 'lib/cul/handles/resolution_response.rb', line 118

def timestamp=(val)
  @timestamp=val
end

#to_sObject



157
158
159
160
161
162
# File 'lib/cul/handles/resolution_response.rb', line 157

def to_s
  if (type == "HS_ADMIN")
    return "admin handle data: ttl= " + fromBytes(@ttl).to_s + " ; ttlType= " + @ttlType.to_s + "; index = " + index.to_s +  "; " + decodeAdminData(@data).to_s + "; permissions = " + @perm.to_s
  end
  return "type: " + type + "; index=" + index.to_s + "; data.length: " + @data.length.to_s + " ; data: " + data + "; data(hex): " + @data.collect { |element| "%02x" % element }.join+ "; permissions = " + @perm.to_s
end

#ttl=(val) ⇒ Object



124
125
126
# File 'lib/cul/handles/resolution_response.rb', line 124

def ttl=(val)
  @ttl = val
end

#ttlType=(val) ⇒ Object



121
122
123
# File 'lib/cul/handles/resolution_response.rb', line 121

def ttlType=(val)
  @ttlType = val
end

#typeObject



145
146
147
# File 'lib/cul/handles/resolution_response.rb', line 145

def type
  return @type.pack('U*')
end

#type=(val) ⇒ Object



142
143
144
# File 'lib/cul/handles/resolution_response.rb', line 142

def type=(val)
  @type=val
end