How to use Dbus to detect application uniqueness in D?

Hossain Adnan relay.public.adnan at outlook.com
Fri Sep 27 22:10:48 UTC 2019


Hi I need to detect application uniqueness using dbus. I have a 
working code in Rust:

fn run_as_unique_instance() {
     println!("First instance detected. Doing work...");
     loop {}
}

fn run_as_nonunique_instance() {
     println!("Another instance is already running. Quiting...");
     std::process::exit(0);
}

fn main() {
     let session =
         dbus::blocking::Connection::new_session().expect("Cannot 
setup a new dbus session");

     match session.request_name("com.localserver.app.bus", false, 
false, false) {
         
Ok(dbus::blocking::stdintf::org_freedesktop_dbus::RequestNameReply::PrimaryOwner) => {
             run_as_unique_instance()
         }
         Ok(_) => run_as_nonunique_instance(), // 
RequestNameReply::InQueue
         Err(_) => panic!("Error in session name request."),
     }
}


This creates a new session in dbus and then requests name. If the 
response is "PrimaryOwner" it means the application is unique. 
However I can't find the similar symbols in ddbus.

https://ddbus.dpldocs.info/search-results.html#!session
https://ddbus.dpldocs.info/search-results.html#!Connection

Returns nothing.


More information about the Digitalmars-d-learn mailing list