1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module gio.IOSchedulerJob; 26 27 private import gio.Cancellable; 28 private import gtkc.gio; 29 public import gtkc.giotypes; 30 31 32 /** 33 * Opaque class for defining and scheduling IO jobs. 34 */ 35 public class IOSchedulerJob 36 { 37 /** the main Gtk struct */ 38 protected GIOSchedulerJob* gIOSchedulerJob; 39 protected bool ownedRef; 40 41 /** Get the main Gtk struct */ 42 public GIOSchedulerJob* getIOSchedulerJobStruct() 43 { 44 return gIOSchedulerJob; 45 } 46 47 /** the main Gtk struct as a void* */ 48 protected void* getStruct() 49 { 50 return cast(void*)gIOSchedulerJob; 51 } 52 53 /** 54 * Sets our main struct and passes it to the parent class. 55 */ 56 public this (GIOSchedulerJob* gIOSchedulerJob, bool ownedRef = false) 57 { 58 this.gIOSchedulerJob = gIOSchedulerJob; 59 this.ownedRef = ownedRef; 60 } 61 62 63 /** 64 * Used from an I/O job to send a callback to be run in the thread 65 * that the job was started from, waiting for the result (and thus 66 * blocking the I/O job). 67 * 68 * Deprecated: Use g_main_context_invoke(). 69 * 70 * Params: 71 * func = a #GSourceFunc callback that will be called in the original thread 72 * userData = data to pass to @func 73 * notify = a #GDestroyNotify for @user_data, or %NULL 74 * 75 * Return: The return value of @func 76 */ 77 public bool sendToMainloop(GSourceFunc func, void* userData, GDestroyNotify notify) 78 { 79 return g_io_scheduler_job_send_to_mainloop(gIOSchedulerJob, func, userData, notify) != 0; 80 } 81 82 /** 83 * Used from an I/O job to send a callback to be run asynchronously in 84 * the thread that the job was started from. The callback will be run 85 * when the main loop is available, but at that time the I/O job might 86 * have finished. The return value from the callback is ignored. 87 * 88 * Note that if you are passing the @user_data from g_io_scheduler_push_job() 89 * on to this function you have to ensure that it is not freed before 90 * @func is called, either by passing %NULL as @notify to 91 * g_io_scheduler_push_job() or by using refcounting for @user_data. 92 * 93 * Deprecated: Use g_main_context_invoke(). 94 * 95 * Params: 96 * func = a #GSourceFunc callback that will be called in the original thread 97 * userData = data to pass to @func 98 * notify = a #GDestroyNotify for @user_data, or %NULL 99 */ 100 public void sendToMainloopAsync(GSourceFunc func, void* userData, GDestroyNotify notify) 101 { 102 g_io_scheduler_job_send_to_mainloop_async(gIOSchedulerJob, func, userData, notify); 103 } 104 105 /** 106 * Cancels all cancellable I/O jobs. 107 * 108 * A job is cancellable if a #GCancellable was passed into 109 * g_io_scheduler_push_job(). 110 * 111 * Deprecated: You should never call this function, since you don't 112 * know how other libraries in your program might be making use of 113 * gioscheduler. 114 */ 115 public static void cancelAllJobs() 116 { 117 g_io_scheduler_cancel_all_jobs(); 118 } 119 120 /** 121 * Schedules the I/O job to run in another thread. 122 * 123 * @notify will be called on @user_data after @job_func has returned, 124 * regardless whether the job was cancelled or has run to completion. 125 * 126 * If @cancellable is not %NULL, it can be used to cancel the I/O job 127 * by calling g_cancellable_cancel() or by calling 128 * g_io_scheduler_cancel_all_jobs(). 129 * 130 * Deprecated: use #GThreadPool or g_task_run_in_thread() 131 * 132 * Params: 133 * jobFunc = a #GIOSchedulerJobFunc. 134 * userData = data to pass to @job_func 135 * notify = a #GDestroyNotify for @user_data, or %NULL 136 * ioPriority = the [I/O priority][io-priority] 137 * of the request. 138 * cancellable = optional #GCancellable object, %NULL to ignore. 139 */ 140 public static void pushJob(GIOSchedulerJobFunc jobFunc, void* userData, GDestroyNotify notify, int ioPriority, Cancellable cancellable) 141 { 142 g_io_scheduler_push_job(jobFunc, userData, notify, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct()); 143 } 144 }