D-BUS i Nemerle
Hadde lyst til å teste D-BUS litt så hvorfor ikke samtidig få testet Nemerle tenkte jeg da. Så er her koden til en liten server og klient med utgangspunkt fra D-BUS sitt eget C# eksempel.
echoer.n - svn
using System;
using DBus;
namespace Senikk.DBus
{
[Interface("com.senikk.DBus.Echoer")]
public class Echoer
{
[Method]
public virtual Echo (message : string) : string
{
Console.WriteLine ("Received: " + message);
"Reply: " + message
}
[Method]
public virtual Length (message : string) : int
{
Console.WriteLine ("Received: " + message);
message.Length
}
}
}
server.n - svn
using System;
using DBus;
using Gtk;
namespace Senikk.DBus
{
module Server
{
Main () : void
{
Application.Init ();
def connection = Bus.GetSessionBus ();
def service = Service (connection, "com.senikk.DBus");
def echo = Echoer ();
service.RegisterObject (echo, "/com/senikk/DBus/Echoer");
Application.Run();
}
}
}
client.n - svn
using System;
using DBus;
namespace Senikk.DBus
{
module Client
{
Main () : void
{
def connection = Bus.GetSessionBus ();
def service = Service.Get (connection, "com.senikk.DBus");
def echo = service.GetObject (typeof (Echoer), "/com/senikk/DBus/Echoer") :> Echoer;
Console.WriteLine (echo.Echo("Senikk says hello in DBus using Nemerle!!"));
Console.WriteLine (echo.Length("Length of this text"));
}
}
}
Som en kan se så er det ikke så store forskjeller på disse små eksempelene iforhold til C#. Men du skriver såfall mindre kode i Nemerle for å få gjort det samme siden du slipper å skrive type C#: Connection connection = Bus.GetSessionBus(); Nemerle: def connection = Bus.GetSessionBus(); og så slipper du å skrive return. Casting måtte jeg lete litt etter hvordan en gjorde i Nemerle, C#: etter = (Echoer) Nemerle: :> Echoer på slutten av def linjen.


0 Kommentarer:
Legg inn en kommentar
<< Hjem