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(bool transferOwnership = false) 43 { 44 if (transferOwnership) 45 ownedRef = false; 46 return gIOSchedulerJob; 47 } 48 49 /** the main Gtk struct as a void* */ 50 protected void* getStruct() 51 { 52 return cast(void*)gIOSchedulerJob; 53 } 54 55 /** 56 * Sets our main struct and passes it to the parent class. 57 */ 58 public this (GIOSchedulerJob* gIOSchedulerJob, bool ownedRef = false) 59 { 60 this.gIOSchedulerJob = gIOSchedulerJob; 61 this.ownedRef = ownedRef; 62 } 63 64 65 /** 66 * Used from an I/O job to send a callback to be run in the thread 67 * that the job was started from, waiting for the result (and thus 68 * blocking the I/O job). 69 * 70 * Deprecated: Use g_main_context_invoke(). 71 * 72 * Params: 73 * func = a #GSourceFunc callback that will be called in the original thread 74 * userData = data to pass to @func 75 * notify = a #GDestroyNotify for @user_data, or %NULL 76 * 77 * Returns: The return value of @func 78 */ 79 public bool sendToMainloop(GSourceFunc func, void* userData, GDestroyNotify notify) 80 { 81 return g_io_scheduler_job_send_to_mainloop(gIOSchedulerJob, func, userData, notify) != 0; 82 } 83 84 /** 85 * Used from an I/O job to send a callback to be run asynchronously in 86 * the thread that the job was started from. The callback will be run 87 * when the main loop is available, but at that time the I/O job might 88 * have finished. The return value from the callback is ignored. 89 * 90 * Note that if you are passing the @user_data from g_io_scheduler_push_job() 91 * on to this function you have to ensure that it is not freed before 92 * @func is called, either by passing %NULL as @notify to 93 * g_io_scheduler_push_job() or by using refcounting for @user_data. 94 * 95 * Deprecated: Use g_main_context_invoke(). 96 * 97 * Params: 98 * func = a #GSourceFunc callback that will be called in the original thread 99 * userData = data to pass to @func 100 * notify = a #GDestroyNotify for @user_data, or %NULL 101 */ 102 public void sendToMainloopAsync(GSourceFunc func, void* userData, GDestroyNotify notify) 103 { 104 g_io_scheduler_job_send_to_mainloop_async(gIOSchedulerJob, func, userData, notify); 105 } 106 107 /** 108 * Cancels all cancellable I/O jobs. 109 * 110 * A job is cancellable if a #GCancellable was passed into 111 * g_io_scheduler_push_job(). 112 * 113 * Deprecated: You should never call this function, since you don't 114 * know how other libraries in your program might be making use of 115 * gioscheduler. 116 */ 117 public static void cancelAllJobs() 118 { 119 g_io_scheduler_cancel_all_jobs(); 120 } 121 122 /** 123 * Schedules the I/O job to run in another thread. 124 * 125 * @notify will be called on @user_data after @job_func has returned, 126 * regardless whether the job was cancelled or has run to completion. 127 * 128 * If @cancellable is not %NULL, it can be used to cancel the I/O job 129 * by calling g_cancellable_cancel() or by calling 130 * g_io_scheduler_cancel_all_jobs(). 131 * 132 * Deprecated: use #GThreadPool or g_task_run_in_thread() 133 * 134 * Params: 135 * jobFunc = a #GIOSchedulerJobFunc. 136 * userData = data to pass to @job_func 137 * notify = a #GDestroyNotify for @user_data, or %NULL 138 * ioPriority = the [I/O priority][io-priority] 139 * of the request. 140 * cancellable = optional #GCancellable object, %NULL to ignore. 141 */ 142 public static void pushJob(GIOSchedulerJobFunc jobFunc, void* userData, GDestroyNotify notify, int ioPriority, Cancellable cancellable) 143 { 144 g_io_scheduler_push_job(jobFunc, userData, notify, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct()); 145 } 146 }