git-svn-id: svn://db.shs.com.ru/pip@235 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -145,7 +145,7 @@ PIPeer::PIPeer(const PIString & n): PIIODevice() {
|
||||
CONNECTU(&timer, tickEvent, this, timerEvent);
|
||||
prev_ifaces = PIEthernet::interfaces();
|
||||
no_timer = false;
|
||||
initNetwork();
|
||||
// initNetwork();
|
||||
sendSelfInfo();
|
||||
timer.addDelimiter(5);
|
||||
timer.start(1000);
|
||||
@@ -759,6 +759,7 @@ void PIPeer::pingNeighbours() {
|
||||
|
||||
|
||||
bool PIPeer::openDevice() {
|
||||
reinit();
|
||||
PIMutexLocker ml(peers_mutex);
|
||||
if (trust_peer.isEmpty())
|
||||
return !peers.isEmpty();
|
||||
@@ -840,7 +841,7 @@ void PIPeer::reinit() {
|
||||
}
|
||||
|
||||
|
||||
void PIPeer::changeName(const PIString & new_name) {
|
||||
void PIPeer::changeName(const PIString &new_name) {
|
||||
PIString name_ = new_name;
|
||||
if (name_.isEmpty()) name_ = "rnd_" + PIString::fromNumber(random() % 1000);
|
||||
setName(name_);
|
||||
@@ -857,20 +858,30 @@ PIString PIPeer::constructFullPath() const {
|
||||
}
|
||||
|
||||
|
||||
int PIPeer::read(void * read_to, int max_size) {
|
||||
while (read_buffer.isEmpty()) piMSleep(10);
|
||||
PIMutexLocker ml(read_buffer_mutex);
|
||||
int PIPeer::read(void *read_to, int max_size) {
|
||||
read_buffer_mutex.lock();
|
||||
bool empty = read_buffer.isEmpty();
|
||||
read_buffer_mutex.unlock();
|
||||
while (empty) {
|
||||
read_buffer_mutex.lock();
|
||||
empty = read_buffer.isEmpty();
|
||||
read_buffer_mutex.unlock();
|
||||
piMSleep(10);
|
||||
}
|
||||
read_buffer_mutex.lock();
|
||||
if (!read_buffer.isEmpty()) {
|
||||
PIByteArray ba = read_buffer.dequeue();
|
||||
read_buffer_mutex.unlock();
|
||||
int sz = piMini(ba.size_s(), max_size);
|
||||
memcpy(read_to, ba.data(), sz);
|
||||
return sz;
|
||||
}
|
||||
read_buffer_mutex.unlock();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int PIPeer::write(const void * data, int size) {
|
||||
int PIPeer::write(const void *data, int size) {
|
||||
if (trust_peer.isEmpty()) {
|
||||
sendToAll(data, size);
|
||||
return size;
|
||||
|
||||
Reference in New Issue
Block a user