diff --git a/networktables/cpp/Athena/src/main/native/networktables2/stream/FDIOStream.cpp b/networktables/cpp/Athena/src/main/native/networktables2/stream/FDIOStream.cpp index 107e19593c..74fca50736 100644 --- a/networktables/cpp/Athena/src/main/native/networktables2/stream/FDIOStream.cpp +++ b/networktables/cpp/Athena/src/main/native/networktables2/stream/FDIOStream.cpp @@ -24,13 +24,6 @@ FDIOStream::FDIOStream(int _fd){ // f = fdopen(_fd, "rbwb"); // if(f==NULL) // throw IOException("Could not open stream from file descriptor", errno); - // Set the TCP socket to be non-blocking - int flags = fcntl(fd, F_GETFL, 0); - if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) - { - ::close(fd); - throw IOException("Could not set socket to non-blocking mode"); - } } FDIOStream::~FDIOStream(){ close(); @@ -73,35 +66,14 @@ int FDIOStream::read(void* ptr, int numbytes){ return totalRead; } int FDIOStream::write(const void* ptr, int numbytes){ - int numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - - if (numWrote == -1 && (errno == EWOULDBLOCK || errno == EAGAIN)) - { - // see if write timeout expires - struct timeval timeout; - fd_set fdSet; - - FD_ZERO(&fdSet); - FD_SET(fd, &fdSet); - timeout.tv_sec = 1; // wait 1 second for the other side to connect - timeout.tv_usec = 0; - - int select_result = select(FD_SETSIZE, NULL, &fdSet, NULL, &timeout); - if ( select_result < 0) - throw IOException("Select returned an error on write"); - - if (FD_ISSET(fd, &fdSet)) { - numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - } - } - - perror("write error: "); - fflush(stderr); - throw IOException("Could not write all bytes to fd stream"); + int numWrote = ::write(fd, (char*)ptr, numbytes);//TODO: this is bad + //int numWrote = fwrite(ptr, 1, numbytes, f); + if(numWrote==numbytes) + return numWrote; + perror("write error: "); + fflush(stderr); + throw IOException("Could not write all bytes to fd stream"); + } void FDIOStream::flush(){ //if(fflush(f)==EOF) diff --git a/networktables/cpp/Azalea/src/main/native/networktables2/stream/FDIOStream.cpp b/networktables/cpp/Azalea/src/main/native/networktables2/stream/FDIOStream.cpp index f62b819b6b..d0dd657c9b 100644 --- a/networktables/cpp/Azalea/src/main/native/networktables2/stream/FDIOStream.cpp +++ b/networktables/cpp/Azalea/src/main/native/networktables2/stream/FDIOStream.cpp @@ -22,13 +22,6 @@ FDIOStream::FDIOStream(int _fd){ // f = fdopen(_fd, "rbwb"); // if(f==NULL) // throw IOException("Could not open stream from file descriptor", errno); - // Set the TCP socket to be non-blocking - int on = 1; - if (ioctl(fd, FIONBIO, (char*)&on) < 0) - { - ::close(fd); - throw IOException("Could not set socket to non-blocking mode"); - } } FDIOStream::~FDIOStream(){ close(); @@ -71,35 +64,14 @@ int FDIOStream::read(void* ptr, int numbytes){ return totalRead; } int FDIOStream::write(const void* ptr, int numbytes){ - int numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - - if (numWrote == -1 && (errno == EWOULDBLOCK || errno == EAGAIN)) - { - // see if write timeout expires - struct timeval timeout; - fd_set fdSet; - - FD_ZERO(&fdSet); - FD_SET(fd, &fdSet); - timeout.tv_sec = 1; // wait 1 second for the other side to connect - timeout.tv_usec = 0; - - int select_result = select(FD_SETSIZE, NULL, &fdSet, NULL, &timeout); - if ( select_result < 0) - throw IOException("Select returned an error on write"); - - if (FD_ISSET(fd, &fdSet)) { - numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - } - } - - perror("write error: "); - fflush(stderr); - throw IOException("Could not write all bytes to fd stream"); + int numWrote = ::write(fd, (char*)ptr, numbytes);//TODO: this is bad + //int numWrote = fwrite(ptr, 1, numbytes, f); + if(numWrote==numbytes) + return numWrote; + perror("write error: "); + fflush(stderr); + throw IOException("Could not write all bytes to fd stream"); + } void FDIOStream::flush(){ //if(fflush(f)==EOF) diff --git a/networktables/cpp/Win32/src/main/native/networktables2/stream/FDIOStream.cpp b/networktables/cpp/Win32/src/main/native/networktables2/stream/FDIOStream.cpp index 0e8d23cf55..f1868ba330 100644 --- a/networktables/cpp/Win32/src/main/native/networktables2/stream/FDIOStream.cpp +++ b/networktables/cpp/Win32/src/main/native/networktables2/stream/FDIOStream.cpp @@ -20,13 +20,6 @@ FDIOStream::FDIOStream(int _fd){ fd = _fd; - // Set the TCP socket to be non-blocking - u_long on = 1; - if (ioctlsocket(fd, FIONBIO, &on)) - { - ::close(fd); - throw IOException("Could not set socket to non-blocking mode"); - } } FDIOStream::~FDIOStream(){ @@ -86,35 +79,13 @@ int Send( int sockfd,char* Data, size_t sizeData ) int FDIOStream::write(const void* ptr, int numbytes) { - int numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - - if (numWrote == -1 && (errno == EWOULDBLOCK || errno == EAGAIN)) - { - // see if write timeout expires - struct timeval timeout; - fd_set fdSet; - - FD_ZERO(&fdSet); - FD_SET(fd, &fdSet); - timeout.tv_sec = 1; // wait 1 second for the other side to connect - timeout.tv_usec = 0; - - int select_result = select(FD_SETSIZE, NULL, &fdSet, NULL, &timeout); - if ( select_result < 0) - throw IOException("Select returned an error on write"); - - if (FD_ISSET(fd, &fdSet)) { - numWrote = ::write(fd, (char*)ptr, numbytes); - if(numWrote==numbytes) - return numWrote; - } - } - - perror("write error: "); - fflush(stderr); - throw IOException("Could not write all bytes to fd stream"); + int numWrote = Send(fd,(char *)ptr,numbytes); + if(numWrote==numbytes) + return numWrote; + perror("write error: "); + fflush(stderr); + throw IOException("Could not write all bytes to fd stream"); + } void FDIOStream::flush(){ diff --git a/networktables/cpp/include/src/main/include/networktables2/NetworkTableEntry.h b/networktables/cpp/include/src/main/include/networktables2/NetworkTableEntry.h index 27223e4c53..2a2900435e 100644 --- a/networktables/cpp/include/src/main/include/networktables2/NetworkTableEntry.h +++ b/networktables/cpp/include/src/main/include/networktables2/NetworkTableEntry.h @@ -42,7 +42,6 @@ public: NetworkTableEntry(std::string& name, NetworkTableEntryType* type, EntryValue value); NetworkTableEntry(EntryId id, std::string& name, SequenceNumber sequenceNumber, NetworkTableEntryType* type, EntryValue value); - NetworkTableEntry(const NetworkTableEntry &); virtual ~NetworkTableEntry(); EntryId GetId(); diff --git a/networktables/cpp/parent/src/main/native/networktables2/NetworkTableEntry.cpp b/networktables/cpp/parent/src/main/native/networktables2/NetworkTableEntry.cpp index 658c7c7a85..9538c91df6 100644 --- a/networktables/cpp/parent/src/main/native/networktables2/NetworkTableEntry.cpp +++ b/networktables/cpp/parent/src/main/native/networktables2/NetworkTableEntry.cpp @@ -20,17 +20,6 @@ NetworkTableEntry::NetworkTableEntry(EntryId _id, std::string& _name, SequenceNu m_isDirty = false; } -NetworkTableEntry::NetworkTableEntry(const NetworkTableEntry &other) : - name(other.name), - id(other.id), - sequenceNumber(other.sequenceNumber), - type(other.type), - m_isNew(other.m_isNew), - m_isDirty(other.m_isDirty) -{ - value = type->copyValue(other.value); -} - NetworkTableEntry::~NetworkTableEntry(){ type->deleteValue(value); } diff --git a/networktables/cpp/parent/src/main/native/networktables2/WriteManager.cpp b/networktables/cpp/parent/src/main/native/networktables2/WriteManager.cpp index c8eb8fee46..bbe08f504d 100644 --- a/networktables/cpp/parent/src/main/native/networktables2/WriteManager.cpp +++ b/networktables/cpp/parent/src/main/native/networktables2/WriteManager.cpp @@ -97,17 +97,10 @@ void WriteManager::run() { entry = ((std::queue*)outgoingAssignmentQueue)->front(); ((std::queue*)outgoingAssignmentQueue)->pop(); { - NetworkTableEntry * entryCopy; - - { - NTSynchronized sync(entryStore.LOCK); - entry->MakeClean(); - wrote = true; - entryCopy = new NetworkTableEntry(*entry); - } - - receiver.offerOutgoingAssignment(entryCopy); - delete entryCopy; + NTSynchronized sync(entryStore.LOCK); + entry->MakeClean(); + wrote = true; + receiver.offerOutgoingAssignment(entry); } } @@ -115,17 +108,10 @@ void WriteManager::run() { entry = ((std::queue*)outgoingUpdateQueue)->front(); ((std::queue*)outgoingUpdateQueue)->pop(); { - NetworkTableEntry * entryCopy; - - { - NTSynchronized sync(entryStore.LOCK); - entry->MakeClean(); - wrote = true; - entryCopy = new NetworkTableEntry(*entry); - } - - receiver.offerOutgoingUpdate(entryCopy); - delete entryCopy; + NTSynchronized sync(entryStore.LOCK); + entry->MakeClean(); + wrote = true; + receiver.offerOutgoingUpdate(entry); } }