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