class Cups::Job
Attributes
completed_time[RW]
creation_time[RW]
format[RW]
id[RW]
printer[RW]
processing_time[RW]
size[RW]
state[RW]
title[RW]
Public Class Methods
get_job(id, name=nil, filter=-1, connection=nil)
click to toggle source
Get job from id @param id [Integer] @param name [String] @param filter [Integer] see Constants @param connection [Cups::Connection] @return [Job] job object
# File lib/ffi-cups/job.rb, line 58 def self.get_job(id, name=nil, filter=-1, connection=nil) jobs = get_jobs(name, filter, connection) jobs.each do |j| return j if j.id == id end raise "Job with id: #{id} not found!" end
get_jobs(name=nil, filter=-1, connection=nil)
click to toggle source
Get jobs by filter or destination name @param name [String] @param filter [Integer] see Constants @param connection [Cups::Connection] @return [Array] jobs
# File lib/ffi-cups/job.rb, line 35 def self.get_jobs(name=nil, filter=-1, connection=nil) p_jobs = FFI::MemoryPointer.new :pointer cups_jobs = cupsGetJobs2(p_jobs, name, filter, connection) jobs = [] cups_jobs.each do |j| job = Cups::Job.new(j[:id].dup, j[:title].dup, j[:dest].dup) job.format = j[:format] job.state = j[:state] job.size = j[:size] job.completed_time = Time.at(j[:completed_time]) job.creation_time = Time.at(j[:creation_time]) job.processing_time = Time.at(j[:processing_time]) jobs.push(job) end return jobs end
new(id, title, printer)
click to toggle source
# File lib/ffi-cups/job.rb, line 7 def initialize(id, title, printer) @id = id @title = title @printer = printer end
Private Class Methods
cupsGetJobs2(pointer, name=nil, filter=-1, connection=nil)
click to toggle source
Wrapper {::FFI::Cups#cupsGetJobs2} @param pointer [Pointer] pointer to the jobs @param name [String] name of the destination or NULL @param filter [Integer] see Constants for more filters @param connection [Cups::Connection] @return [Array] array of job structs
# File lib/ffi-cups/job.rb, line 73 def self.cupsGetJobs2(pointer, name=nil, filter=-1, connection=nil) http = connection.nil? ? nil : connection.httpConnect2 num_jobs = FFI::Cups.cupsGetJobs2(http, pointer, name, 0, filter) size = Cups::Struct::Job.size jobs = [] num_jobs.times do |i| job = Cups::Struct::Job.new(pointer.get_pointer(0) + (size * i)) jobs.push(job) end Cups::Connection.close(http) if http return jobs end
Public Instance Methods
cancel(purge=0, connection=nil)
click to toggle source
Cancel or purge a job @param connection [Cups::Connection]
# File lib/ffi-cups/job.rb, line 23 def cancel(purge=0, connection=nil) job = self.class.get_job(@id, @printer, -1, connection) r = FFI::Cups.cupsCancelJob2(connection, @printer, @id, purge) raise FFI::Cups.cupsLastErrorString() if r == 0 return r end
status(connection=nil)
click to toggle source
get a updated job's state @param connection [Cups::Connection] @return [Symbol] job's state
# File lib/ffi-cups/job.rb, line 16 def status(connection=nil) job = self.class.get_job(@id, @printer, -1, connection) self.state = job.state if job end