Thread overview
HessianD
May 28, 2007
Radu
Jun 05, 2007
Simen Haugen
Jun 05, 2007
Radu
Jun 05, 2007
Simen Haugen
Jun 05, 2007
Simen Haugen
Jun 05, 2007
Radu
Jun 05, 2007
Radu
Jun 05, 2007
Simen Haugen
May 28, 2007
HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service = new HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo = &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
	char[] echo (char[] param)
	{
	  return param;
	}	
}

void main()
{
    // create a Http server on the given port
    auto server = new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context = server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}



June 05, 2007
I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk that file doesn't exist.

"Radu" <radu.racariu@void.space> wrote in message news:f3f7n3$1r10$1@digitalmars.com...
> HessianD (http://www.dsource.org/projects/hessiand/)
> A D implementation of the Hessian (http://caucho.com/hessian) binary web
> service protocol.
> Supports both the client and the server model.
>
> Client sample:
>
> import hessian.HttpProxy :
> HttpProxy;
> import tango.io.Stdout;
>
> char[] echo(char[] param);
>
> void main ()
> {
>
>     // create a Http proxy on the given Http endpoint so we can post
> our Hessian stream
>     scope service = new HttpProxy("http://localhost:5667/hessiantest");
>
>     // create a proxy method that will do the Hessian serialization
> and deserialization
>     auto _echo = &service.proxy!(echo);
>
>     // we'll perform the remote call and display the result
>     Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;
>
> }
>
> Server sample:
>
> import hessian.HttpServer:
> Server;
>
> class impl
> {
> char[] echo (char[] param)
> {
>   return param;
> } }
>
> void main()
> {
>     // create a Http server on the given port
>     auto server = new Server(5667);
>     // attach a context with the Http endpoint and the class
> implementing the method
>     auto context = server.addContext!(impl)("/test/hessiantest");
>     // bind the method to the context created
>     context.bind!(impl.echo);
>     // and finally start listenning to Http Post requests
>     server.start;
> }
>
>
> 


June 05, 2007
I've updated the project to use:
tango.util.time.WallClock,
tango.util.time.Clock,

it works with tango 0.98 RC2.

Please download hessiand again.


Simen Haugen wrote:
> I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk that file doesn't exist.
>
> "Radu" <radu.racariu@void.space> wrote in message
> news:f3f7n3$1r10$1@digitalmars.com...
> 
>> HessianD (http://www.dsource.org/projects/hessiand/)
>> A D implementation of the Hessian (http://caucho.com/hessian) binary web
>> service protocol.
>> Supports both the client and the server model.
>>
>> Client sample:
>>
>> import hessian.HttpProxy :
>> HttpProxy;
>> import tango.io.Stdout;
>>
>> char[] echo(char[] param);
>>
>> void main ()
>> {
>>
>>     // create a Http proxy on the given Http endpoint so we can post
>> our Hessian stream
>>     scope service = new HttpProxy("http://localhost:5667/hessiantest");
>>
>>     // create a proxy method that will do the Hessian serialization
>> and deserialization
>>     auto _echo = &service.proxy!(echo);
>>
>>     // we'll perform the remote call and display the result
>>     Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;
>>
>> }
>>
>> Server sample:
>>
>> import hessian.HttpServer:
>> Server;
>>
>> class impl
>> {
>> char[] echo (char[] param)
>> {
>>   return param;
>> } }
>>
>> void main()
>> {
>>     // create a Http server on the given port
>>     auto server = new Server(5667);
>>     // attach a context with the Http endpoint and the class
>> implementing the method
>>     auto context = server.addContext!(impl)("/test/hessiantest");
>>     // bind the method to the context created
>>     context.bind!(impl.echo);
>>     // and finally start listenning to Http Post requests
>>     server.start;
>> }
>>
>>
>>
>> 
>
>
> 



June 05, 2007
Compiling works fine now, but I cannot get your examples to work. When trying to run the client, I get the following error:

hessian.Input.HessianError: invalid reply, expected 'r' instead of<
  "Radu" <radu.racariu@void.space> wrote in message news:f43gc1$2qa$1@digitalmars.com...
  I've updated the project to use:
  tango.util.time.WallClock,
  tango.util.time.Clock,

  it works with tango 0.98 RC2.

  Please download hessiand again.


  Simen Haugen wrote:
I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk
that file doesn't exist.

"Radu" <radu.racariu@void.space> wrote in message
news:f3f7n3$1r10$1@digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service = new HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo = &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server = new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context = server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}








June 05, 2007
Sorry, my bad. I just implemented the interface in both the client and server code as a quick hack, and that didnt work. If I use the same interface file it works.. Nice work! Looking forward to trying it.
  "Simen Haugen" <simen@norstat.no> wrote in message news:f43i4t$6ej$1@digitalmars.com...
  Compiling works fine now, but I cannot get your examples to work. When trying to run the client, I get the following error:

  hessian.Input.HessianError: invalid reply, expected 'r' instead of<
    "Radu" <radu.racariu@void.space> wrote in message news:f43gc1$2qa$1@digitalmars.com...
    I've updated the project to use:
    tango.util.time.WallClock,
    tango.util.time.Clock,

    it works with tango 0.98 RC2.

    Please download hessiand again.


    Simen Haugen wrote:
I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk
that file doesn't exist.

"Radu" <radu.racariu@void.space> wrote in message
news:f3f7n3$1r10$1@digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service = new HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo = &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server = new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context = server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}








June 05, 2007
can you compile the client example with -version=Debug
then paste the  "response:" line.
As a note I'm compiling with dmd 1.014, rebuild 0.65 on Windows XP


Simen Haugen wrote:
> Compiling works fine now, but I cannot get your examples to work. When
> trying to run the client, I get the following error:
> 
> hessian.Input.HessianError: invalid reply, expected 'r' instead of<
>
>     "Radu" <radu.racariu@void.space <mailto:radu.racariu@void.space>>
>     wrote in message news:f43gc1$2qa$1@digitalmars.com...
>     I've updated the project to use:
>     tango.util.time.WallClock,
>     tango.util.time.Clock,
>
>     it works with tango 0.98 RC2.
>
>     Please download hessiand again.
>
>
>     Simen Haugen wrote:
>>     I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk
>>     that file doesn't exist.
>>
>>     "Radu" <radu.racariu@void.space> wrote in message
>>     news:f3f7n3$1r10$1@digitalmars.com...
>> 
>>>     HessianD (http://www.dsource.org/projects/hessiand/)
>>>     A D implementation of the Hessian (http://caucho.com/hessian) binary web
>>>     service protocol.
>>>     Supports both the client and the server model.
>>>
>>>     Client sample:
>>>
>>>     import hessian.HttpProxy :
>>>     HttpProxy;
>>>     import tango.io.Stdout;
>>>
>>>     char[] echo(char[] param);
>>>
>>>     void main ()
>>>     {
>>>
>>>         // create a Http proxy on the given Http endpoint so we can post
>>>     our Hessian stream
>>>         scope service = new HttpProxy("http://localhost:5667/hessiantest");
>>>
>>>         // create a proxy method that will do the Hessian serialization
>>>     and deserialization
>>>         auto _echo = &service.proxy!(echo);
>>>
>>>         // we'll perform the remote call and display the result
>>>         Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;
>>>
>>>     }
>>>
>>>     Server sample:
>>>
>>>     import hessian.HttpServer:
>>>     Server;
>>>
>>>     class impl
>>>     {
>>>     char[] echo (char[] param)
>>>     {
>>>       return param;
>>>     } }
>>>
>>>     void main()
>>>     {
>>>         // create a Http server on the given port
>>>         auto server = new Server(5667);
>>>         // attach a context with the Http endpoint and the class
>>>     implementing the method
>>>         auto context = server.addContext!(impl)("/test/hessiantest");
>>>         // bind the method to the context created
>>>         context.bind!(impl.echo);
>>>         // and finally start listenning to Http Post requests
>>>         server.start;
>>>     }
>>>
>>>
>>>
>>> 
>>
>>
>> 
>



June 05, 2007
great!

Simen Haugen wrote:
> Sorry, my bad. I just implemented the interface in both the client and server code as a quick hack, and that didnt work. If I use the same interface file it works.. Nice work! Looking forward to trying it.
>
>     "Simen Haugen" <simen@norstat.no <mailto:simen@norstat.no>> wrote
>     in message news:f43i4t$6ej$1@digitalmars.com...
>     Compiling works fine now, but I cannot get your examples to work.
>     When trying to run the client, I get the following error:
> 
>     hessian.Input.HessianError: invalid reply, expected 'r' instead of<
>
>         "Radu" <radu.racariu@void.space
>         <mailto:radu.racariu@void.space>> wrote in message
>         news:f43gc1$2qa$1@digitalmars.com...
>         I've updated the project to use:
>         tango.util.time.WallClock,
>         tango.util.time.Clock,
>
>         it works with tango 0.98 RC2.
>
>         Please download hessiand again.
>
>
>         Simen Haugen wrote:
>>         I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk
>>         that file doesn't exist.
>>
>>         "Radu" <radu.racariu@void.space> wrote in message
>>         news:f3f7n3$1r10$1@digitalmars.com...
>> 
>>>         HessianD (http://www.dsource.org/projects/hessiand/)
>>>         A D implementation of the Hessian (http://caucho.com/hessian) binary web
>>>         service protocol.
>>>         Supports both the client and the server model.
>>>
>>>         Client sample:
>>>
>>>         import hessian.HttpProxy :
>>>         HttpProxy;
>>>         import tango.io.Stdout;
>>>
>>>         char[] echo(char[] param);
>>>
>>>         void main ()
>>>         {
>>>
>>>             // create a Http proxy on the given Http endpoint so we can post
>>>         our Hessian stream
>>>             scope service = new HttpProxy("http://localhost:5667/hessiantest");
>>>
>>>             // create a proxy method that will do the Hessian serialization
>>>         and deserialization
>>>             auto _echo = &service.proxy!(echo);
>>>
>>>             // we'll perform the remote call and display the result
>>>             Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;
>>>
>>>         }
>>>
>>>         Server sample:
>>>
>>>         import hessian.HttpServer:
>>>         Server;
>>>
>>>         class impl
>>>         {
>>>         char[] echo (char[] param)
>>>         {
>>>           return param;
>>>         } }
>>>
>>>         void main()
>>>         {
>>>             // create a Http server on the given port
>>>             auto server = new Server(5667);
>>>             // attach a context with the Http endpoint and the class
>>>         implementing the method
>>>             auto context = server.addContext!(impl)("/test/hessiantest");
>>>             // bind the method to the context created
>>>             context.bind!(impl.echo);
>>>             // and finally start listenning to Http Post requests
>>>             server.start;
>>>         }
>>>
>>>
>>>
>>> 
>>
>>
>> 
>



June 05, 2007
I just tried to reproduce it, but it worked now... I must have done something else, but I don't know what.
  "Radu" <radu.racariu@void.space> wrote in message news:f43k2n$9d6$1@digitalmars.com...
  can you compile the client example with -version=Debug
  then paste the  "response:" line.
  As a note I'm compiling with dmd 1.014, rebuild 0.65 on Windows XP


  Simen Haugen wrote:
    Compiling works fine now, but I cannot get your examples to work. When trying to run the client, I get the following error:

    hessian.Input.HessianError: invalid reply, expected 'r' instead of<
      "Radu" <radu.racariu@void.space> wrote in message news:f43gc1$2qa$1@digitalmars.com...
      I've updated the project to use:
      tango.util.time.WallClock,
      tango.util.time.Clock,

      it works with tango 0.98 RC2.

      Please download hessiand again.


      Simen Haugen wrote:
I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk
that file doesn't exist.

"Radu" <radu.racariu@void.space> wrote in message
news:f3f7n3$1r10$1@digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service = new HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo = &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server = new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context = server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}