event/MultiSocketMonitor: PrepareSockets() returns timeout

Simplify the API, don't use GLib specific integer type.
This commit is contained in:
Max Kellermann 2013-08-10 10:57:00 +02:00
parent cbd0709d1c
commit be0c8495cd
3 changed files with 17 additions and 11 deletions

View File

@ -101,7 +101,10 @@ public:
}
protected:
virtual void PrepareSockets(gcc_unused gint *timeout_r) {}
/**
* @return timeout [ms] or -1 for no timeout
*/
virtual int PrepareSockets() = 0;
virtual bool CheckSockets() const { return false; }
virtual void DispatchSockets() = 0;
@ -114,7 +117,7 @@ public:
private:
bool Prepare(gint *timeout_r) {
PrepareSockets(timeout_r);
*timeout_r = PrepareSockets();
return false;
}

View File

@ -204,7 +204,7 @@ public:
private:
void UpdateSockets();
virtual void PrepareSockets(gcc_unused gint *timeout_r) override;
virtual int PrepareSockets() override;
virtual bool CheckSockets() const override;
virtual void DispatchSockets() override;
};
@ -536,8 +536,8 @@ input_curl_perform(void)
return true;
}
void
CurlSockets::PrepareSockets(gint *timeout_r)
int
CurlSockets::PrepareSockets()
{
UpdateSockets();
@ -556,12 +556,13 @@ CurlSockets::PrepareSockets(gint *timeout_r)
Let's use a lower limit of 10ms. */
timeout2 = 10;
*timeout_r = timeout2;
have_timeout = timeout2 >= 0;
} else
return timeout2;
} else {
g_warning("curl_multi_timeout() failed: %s\n",
curl_multi_strerror(mcode));
return -1;
}
}
bool

View File

@ -44,7 +44,7 @@ public:
:MultiSocketMonitor(_loop), mixer(_mixer) {}
private:
virtual void PrepareSockets(gcc_unused gint *timeout_r) override;
virtual int PrepareSockets() override;
virtual void DispatchSockets() override;
};
@ -83,8 +83,8 @@ alsa_mixer_quark(void)
return g_quark_from_static_string("alsa_mixer");
}
void
AlsaMixerMonitor::PrepareSockets(gcc_unused gint *timeout_r)
int
AlsaMixerMonitor::PrepareSockets()
{
int count = snd_mixer_poll_descriptors_count(mixer);
if (count < 0)
@ -113,6 +113,8 @@ AlsaMixerMonitor::PrepareSockets(gcc_unused gint *timeout_r)
for (auto i = pfds; i != end; ++i)
if (i->events != 0)
AddSocket(i->fd, i->events);
return -1;
}
void