Now you can download a copy of these docs so you can use them offline! Download now
NetworkTableEntry.cpp
1 #include "networktables2/NetworkTableEntry.h"
2 #include "networktables2/AbstractNetworkTableEntryStore.h"
3 
4 
5 NetworkTableEntry::NetworkTableEntry(std::string& _name, NetworkTableEntryType* _type, EntryValue _value)
6  : name(_name), type(_type){
7  id = UNKNOWN_ID;
8  sequenceNumber = 0;
9  value = type->copyValue(_value);
10  m_isNew = true;
11  m_isDirty = false;
12 }
13 
14 NetworkTableEntry::NetworkTableEntry(EntryId _id, std::string& _name, SequenceNumber _sequenceNumber, NetworkTableEntryType* _type, EntryValue _value)
15  :name(_name), type(_type){
16  id = _id;
17  sequenceNumber = _sequenceNumber;
18  value = type->copyValue(_value);
19  m_isNew = true;
20  m_isDirty = false;
21 }
22 
23 NetworkTableEntry::~NetworkTableEntry(){
24  type->deleteValue(value);
25 }
26 
27 EntryId NetworkTableEntry::GetId() {
28  return id;
29 }
30 
31 EntryValue NetworkTableEntry::GetValue(){
32  return value;
33 }
34 
35 NetworkTableEntryType* NetworkTableEntry::GetType(){
36  return type;
37 }
38 
39 bool NetworkTableEntry::PutValue(SequenceNumber newSequenceNumber, EntryValue newValue) {
40  if( (sequenceNumber < newSequenceNumber && newSequenceNumber - sequenceNumber < HALF_OF_SEQUENCE_NUMBERS)
41  || (sequenceNumber > newSequenceNumber && sequenceNumber - newSequenceNumber > HALF_OF_SEQUENCE_NUMBERS) ){
42  EntryValue newValueCopy = type->copyValue(newValue);
43  type->deleteValue(value);
44  value = newValueCopy;
45  sequenceNumber = newSequenceNumber;
46  return true;
47  }
48  return false;
49 }
55 void NetworkTableEntry::ForcePut(SequenceNumber newSequenceNumber, EntryValue newValue) {
56  EntryValue newValueCopy = type->copyValue(newValue);
57  type->deleteValue(value);
58  value = newValueCopy;
59  sequenceNumber = newSequenceNumber;
60 }
67 void NetworkTableEntry::ForcePut(SequenceNumber newSequenceNumber, NetworkTableEntryType* newType, EntryValue newValue) {
68  type->deleteValue(value);
69  type = newType;
70  value = newType->copyValue(newValue);
71  sequenceNumber = newSequenceNumber;
72 }
73 
74 
75 void NetworkTableEntry::MakeDirty() {
76  m_isDirty = true;
77 }
78 void NetworkTableEntry::MakeClean() {
79  m_isDirty = false;
80 }
81 bool NetworkTableEntry::IsDirty(){
82  return m_isDirty;
83 }
84 
91  type->sendValue(value, iostream);
92 }
93 
98  return sequenceNumber;
99 }
105 void NetworkTableEntry::SetId(EntryId _id){
106  if(id!=UNKNOWN_ID)
107  throw IllegalStateException("Cannot set the Id of a table entry that already has a valid id");
108  id = _id;
109 }
114  id = UNKNOWN_ID;
115 }
116 
117 void NetworkTableEntry::Send(NetworkTableConnection& connection) {
118  connection.sendEntryAssignment(*this);
119 }
120 void NetworkTableEntry::FireListener(TableListenerManager& listenerManager) {
121  listenerManager.FireTableListeners(name, value, m_isNew);
122  m_isNew = false;
123 }
virtual void sendValue(EntryValue value, DataIOStream &os)=0
void ClearId()
void ForcePut(SequenceNumber newSequenceNumber, EntryValue newValue)
static const EntryId UNKNOWN_ID
void SendValue(DataIOStream &iostream)
virtual EntryValue copyValue(EntryValue value)
SequenceNumber GetSequenceNumber()
void SetId(EntryId id)
Definition: ITable.h:13
std::string name
virtual void deleteValue(EntryValue value)

Generated on Sat Apr 26 2014 12:26:45 for WPILibC++ by doxygen 1.8.6