git-svn-id: svn://db.shs.com.ru/pip@235 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-08-22 04:57:03 +00:00
parent 3642ea511a
commit 7b227f15ac
2 changed files with 18 additions and 6 deletions

View File

@@ -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;

View File

@@ -249,6 +249,7 @@ Daemon::Daemon(): inited__(false), PIPeer(pisd_prefix + PISystemInfo::instance()
tile_root->addTile(tile_fm);
CONNECTU(&screen, tileEvent, this, tileEvent)
reinit();
inited__ = true;
}