summaryrefslogtreecommitdiff
path: root/source3/printing/printer_list.c
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2010-05-14 15:49:29 -0400
committerAndreas Schneider <asn@samba.org>2010-09-15 12:53:40 +0200
commit25a2d94974c7befd13f90e52b61e297c31ae52e9 (patch)
tree8f3d136d20a85b5da954295e75e03e91dde71a03 /source3/printing/printer_list.c
parent7022554915a0dc7522151eb2a9a21317372471b9 (diff)
downloadsamba-25a2d94974c7befd13f90e52b61e297c31ae52e9.tar.gz
samba-25a2d94974c7befd13f90e52b61e297c31ae52e9.tar.bz2
samba-25a2d94974c7befd13f90e52b61e297c31ae52e9.zip
s3-printing: Add method to skip refresh if just happned.
This way if multiple process try to refresh at the same time we don't do it over and over again. Signed-off-by: Andreas Schneider <asn@cynapses.org>
Diffstat (limited to 'source3/printing/printer_list.c')
-rw-r--r--source3/printing/printer_list.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source3/printing/printer_list.c b/source3/printing/printer_list.c
index 123749cf46..6392755cf5 100644
--- a/source3/printing/printer_list.c
+++ b/source3/printing/printer_list.c
@@ -215,6 +215,32 @@ done:
return status;
}
+bool printer_list_need_refresh(void)
+{
+ NTSTATUS status;
+ time_t now = time(NULL);
+ time_t last_refresh;
+
+ status = printer_list_get_last_refresh(&last_refresh);
+ if (!NT_STATUS_IS_OK(status)) {
+ return true;
+ }
+
+ if (now > last_refresh) {
+ /* if refresh occurred last than 1 seconds ago,
+ * then we probably don't need to refresh */
+ if ((now - last_refresh) < 1) {
+ return false;
+ }
+ } else {
+ /* last_refresh newer than now, wow, someone just updated the
+ * cache under our nose, do not do again. */
+ return false;
+ }
+
+ return true;
+}
+
NTSTATUS printer_list_mark_reload(void)
{
struct db_context *db;