mirror of
https://github.com/irmen/prog8.git
synced 2025-11-05 17:21:42 +00:00
various cleanups, slight update to dbus
This commit is contained in:
15
.idea/libraries/KotlinJavaRuntime__2_.xml
generated
15
.idea/libraries/KotlinJavaRuntime__2_.xml
generated
@@ -1,15 +0,0 @@
|
|||||||
<component name="libraryTable">
|
|
||||||
<library name="KotlinJavaRuntime (2)">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
15
.idea/libraries/KotlinJavaRuntime__3_.xml
generated
15
.idea/libraries/KotlinJavaRuntime__3_.xml
generated
@@ -1,15 +0,0 @@
|
|||||||
<component name="libraryTable">
|
|
||||||
<library name="KotlinJavaRuntime (3)">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
22
.idea/libraries/github_hypfvieh_dbus_java.xml
generated
22
.idea/libraries/github_hypfvieh_dbus_java.xml
generated
@@ -1,22 +1,22 @@
|
|||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="github.hypfvieh.dbus.java" type="repository">
|
<library name="github.hypfvieh.dbus.java" type="repository">
|
||||||
<properties maven-id="com.github.hypfvieh:dbus-java:3.3.0" />
|
<properties maven-id="com.github.hypfvieh:dbus-java:3.3.1" />
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/hypfvieh/dbus-java/3.3.0/dbus-java-3.3.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/hypfvieh/dbus-java/3.3.1/dbus-java-3.3.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-unixsocket/0.38.5/jnr-unixsocket-0.38.5.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-unixsocket/0.38.6/jnr-unixsocket-0.38.6.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-ffi/2.2.1/jnr-ffi-2.2.1.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-ffi/2.2.2/jnr-ffi-2.2.2.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jffi/1.3.1/jffi-1.3.1.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jffi/1.3.1/jffi-1.3.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jffi/1.3.1/jffi-1.3.1-native.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jffi/1.3.1/jffi-1.3.1-native.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/9.0/asm-9.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/9.1/asm-9.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-a64asm/1.0.0/jnr-a64asm-1.0.0.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-a64asm/1.0.0/jnr-a64asm-1.0.0.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-x86asm/1.0.2/jnr-x86asm-1.0.2.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-x86asm/1.0.2/jnr-x86asm-1.0.2.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-constants/0.10.1/jnr-constants-0.10.1.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-constants/0.10.1/jnr-constants-0.10.1.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-enxio/0.32.3/jnr-enxio-0.32.3.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-enxio/0.32.4/jnr-enxio-0.32.4.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-posix/3.1.4/jnr-posix-3.1.4.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/github/jnr/jnr-posix/3.1.5/jnr-posix-3.1.5.jar!/" />
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="openjdk-11" jdkType="JavaSDK" />
|
<orderEntry type="jdk" jdkName="openjdk-11" jdkType="JavaSDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="KotlinJavaRuntime (2)" level="project" />
|
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||||
<orderEntry type="module" module-name="compilerInterfaces" />
|
<orderEntry type="module" module-name="compilerInterfaces" />
|
||||||
<orderEntry type="module" module-name="compilerAst" />
|
<orderEntry type="module" module-name="compilerAst" />
|
||||||
<orderEntry type="library" scope="TEST" name="hamcrest" level="project" />
|
<orderEntry type="library" scope="TEST" name="hamcrest" level="project" />
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ java {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
|
||||||
}
|
|
||||||
|
|
||||||
def prog8version = rootProject.file('compiler/res/version.txt').text.trim()
|
def prog8version = rootProject.file('compiler/res/version.txt').text.trim()
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="openjdk-11" jdkType="JavaSDK" />
|
<orderEntry type="jdk" jdkName="openjdk-11" jdkType="JavaSDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="KotlinJavaRuntime (3)" level="project" />
|
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||||
<orderEntry type="module" module-name="compilerAst" />
|
<orderEntry type="module" module-name="compilerAst" />
|
||||||
<orderEntry type="library" scope="TEST" name="hamcrest" level="project" />
|
<orderEntry type="library" scope="TEST" name="hamcrest" level="project" />
|
||||||
<orderEntry type="library" name="junit.jupiter" level="project" />
|
<orderEntry type="library" name="junit.jupiter" level="project" />
|
||||||
|
|||||||
@@ -12,15 +12,11 @@ java {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
|
||||||
// implementation "org.jetbrains.kotlin:kotlin-reflect"
|
// implementation "org.jetbrains.kotlin:kotlin-reflect"
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-cli:0.3.3'
|
implementation 'org.jetbrains.kotlinx:kotlinx-cli:0.3.3'
|
||||||
implementation "com.github.hypfvieh:dbus-java:3.3.0"
|
implementation "com.github.hypfvieh:dbus-java:3.3.1"
|
||||||
implementation "org.slf4j:slf4j-simple:1.7.30"
|
implementation "org.slf4j:slf4j-simple:1.7.30"
|
||||||
|
|
||||||
testImplementation "org.jetbrains.kotlin:kotlin-test-junit5"
|
testImplementation "org.jetbrains.kotlin:kotlin-test-junit5"
|
||||||
@@ -53,7 +49,7 @@ sourceSets {
|
|||||||
startScripts.enabled = true
|
startScripts.enabled = true
|
||||||
|
|
||||||
application {
|
application {
|
||||||
mainClass = 'prog8.dbus.TestdbusKt'
|
mainClass = 'prog8.dbus.DbusserverKt'
|
||||||
applicationName = 'prog8compilerservicedbus'
|
applicationName = 'prog8compilerservicedbus'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,5 +11,6 @@
|
|||||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||||
<orderEntry type="library" name="jetbrains.kotlinx.cli.jvm" level="project" />
|
<orderEntry type="library" name="jetbrains.kotlinx.cli.jvm" level="project" />
|
||||||
<orderEntry type="library" name="github.hypfvieh.dbus.java" level="project" />
|
<orderEntry type="library" name="github.hypfvieh.dbus.java" level="project" />
|
||||||
|
<orderEntry type="library" name="slf4j.simple" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
@@ -1,15 +1,21 @@
|
|||||||
package prog8.dbus
|
package prog8.dbus
|
||||||
|
|
||||||
|
import org.freedesktop.dbus.annotations.IntrospectionDescription
|
||||||
import org.freedesktop.dbus.interfaces.DBusInterface
|
import org.freedesktop.dbus.interfaces.DBusInterface
|
||||||
|
|
||||||
|
|
||||||
|
const val serviceObjectPath = "/razorvine/TestService"
|
||||||
|
|
||||||
|
|
||||||
interface IrmenDbusTest: DBusInterface
|
interface IrmenDbusTest: DBusInterface
|
||||||
{
|
{
|
||||||
|
@IntrospectionDescription("return some sort of status")
|
||||||
fun Status(address: String): Map<Int, String>
|
fun Status(address: String): Map<Int, String>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
internal class TestService: IrmenDbusTest {
|
internal class TestService: IrmenDbusTest {
|
||||||
|
|
||||||
override fun Status(address: String): Map<Int, String> {
|
override fun Status(address: String): Map<Int, String> {
|
||||||
return mapOf(
|
return mapOf(
|
||||||
5 to "hello",
|
5 to "hello",
|
||||||
@@ -18,5 +24,5 @@ internal class TestService: IrmenDbusTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun isRemote() = true
|
override fun isRemote() = true
|
||||||
override fun getObjectPath() = "/razorvine/TestService"
|
override fun getObjectPath() = serviceObjectPath
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,56 @@ package prog8.dbus
|
|||||||
|
|
||||||
|
|
||||||
import org.freedesktop.dbus.connections.impl.DBusConnection
|
import org.freedesktop.dbus.connections.impl.DBusConnection
|
||||||
|
import org.freedesktop.dbus.exceptions.DBusExecutionException
|
||||||
|
import org.freedesktop.dbus.interfaces.DBusInterface
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Inspect the dbus services interactively via the qdbusviewer tool.
|
||||||
|
|
||||||
|
|
||||||
|
Command line access is also possible with:
|
||||||
|
|
||||||
|
$ dbus-send --session --dest=local.net.razorvine.prog8.dbus --type=method_call --print-reply /razorvine/TestService prog8.dbus.IrmenDbusTest.Status string:"hello world"
|
||||||
|
|
||||||
|
$ qdbus --literal local.net.razorvine.prog8.dbus /razorvine/TestService Status string:"hello world"
|
||||||
|
|
||||||
|
$ gdbus call --session -d local.net.razorvine.prog8.dbus -o /razorvine/TestService --method prog8.dbus.IrmenDbusTest.Status string:"hello world"
|
||||||
|
|
||||||
|
Or with the dasbus python library:
|
||||||
|
|
||||||
|
from dasbus.connection import SessionMessageBus
|
||||||
|
from dasbus.identifier import DBusServiceIdentifier
|
||||||
|
|
||||||
|
PROG8_SERVICE = DBusServiceIdentifier(
|
||||||
|
namespace=("local", "net", "razorvine", "prog8", "dbus"),
|
||||||
|
message_bus=SessionMessageBus()
|
||||||
|
)
|
||||||
|
|
||||||
|
proxy = PROG8_SERVICE.get_proxy("/razorvine/TestService")
|
||||||
|
print(proxy.Status("hello world"))
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
inline fun <reified I: DBusInterface> DBusConnection.getRemote(busname: String, objectpath: String): I =
|
||||||
|
this.getRemoteObject(busname, objectpath, I::class.java)
|
||||||
|
|
||||||
|
inline fun <reified I: DBusInterface> DBusConnection.getPeerRemote(busname: String, objectpath: String): I =
|
||||||
|
this.getPeerRemoteObject(busname, objectpath, I::class.java)
|
||||||
|
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION).use {
|
DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION).use {
|
||||||
println(it.names.toList())
|
|
||||||
println(it.uniqueName)
|
try {
|
||||||
println(it.address)
|
|
||||||
println(it.machineId)
|
val obj = it.getRemote<IrmenDbusTest>("local.net.razorvine.prog8.dbus", serviceObjectPath)
|
||||||
val obj = it.getRemoteObject("local.net.razorvine.dbus.test", "/razorvine/TestService", IrmenDbusTest::class.java)
|
println(obj.Status("irmen"))
|
||||||
println(obj.Status("irmen"))
|
|
||||||
|
} catch (dx: DBusExecutionException) {
|
||||||
|
println("DBUS ERROR! $dx")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
24
dbusCompilerService/src/prog8/dbus/dbusserver.kt
Normal file
24
dbusCompilerService/src/prog8/dbus/dbusserver.kt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package prog8.dbus
|
||||||
|
|
||||||
|
import org.freedesktop.dbus.connections.impl.DBusConnection
|
||||||
|
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val busname = "local.net.razorvine.prog8.dbus"
|
||||||
|
|
||||||
|
DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION).use {
|
||||||
|
it.requestBusName(busname)
|
||||||
|
println("connection names : ${it.names.toList()}")
|
||||||
|
println("connection unique name : ${it.uniqueName}")
|
||||||
|
println("connection address : ${it.address}")
|
||||||
|
println("connection machine id : ${it.machineId}")
|
||||||
|
println("bus name for clients : $busname")
|
||||||
|
println("object path for clients : $serviceObjectPath")
|
||||||
|
|
||||||
|
val service = TestService()
|
||||||
|
it.exportObject(service.objectPath, service)
|
||||||
|
|
||||||
|
Thread.sleep(100000)
|
||||||
|
it.releaseBusName(busname)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
package prog8.dbus
|
|
||||||
|
|
||||||
import org.freedesktop.dbus.connections.impl.DBusConnection
|
|
||||||
|
|
||||||
|
|
||||||
fun main() {
|
|
||||||
DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION).use {
|
|
||||||
it.requestBusName("local.net.razorvine.dbus.test")
|
|
||||||
println(it.names.toList())
|
|
||||||
println(it.uniqueName)
|
|
||||||
println(it.address)
|
|
||||||
println(it.machineId)
|
|
||||||
val service = TestService()
|
|
||||||
it.exportObject(service.objectPath, service)
|
|
||||||
|
|
||||||
Thread.sleep(100000)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,10 +12,6 @@ java {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':compilerInterfaces')
|
implementation project(':compilerInterfaces')
|
||||||
implementation project(':compiler')
|
implementation project(':compiler')
|
||||||
|
|||||||
Reference in New Issue
Block a user