I use eventcore latest version write an echo server for test.

some error of build.

my D code:

```D

import eventcore.core;
import std.functional : toDelegate;
import std.socket : InternetAddress;
import std.exception : enforce;
import core.time : Duration;
import std.stdio : writeln;

void main()
{
        auto addr = new InternetAddress("127.0.0.1", 1111);
auto listener = eventDriver.sockets.listenStream(addr, toDelegate(&onClientConnect)); enforce(listener != StreamListenSocketFD.invalid, "Failed to listen for connections.");

        writeln("Listening for requests on port 1111...");
        while (eventDriver.core.waiterCount)
                eventDriver.core.processEvents(Duration.max);
}

void onClientConnect(StreamListenSocketFD listener, StreamSocketFD client, scope RefAddress)
{
        Connection connection = new Connection(client);

        // Send welcome message to client
        connection.write("Welcome to use my echo server.");
}

class Connection
{
        StreamSocketFD client;

        ubyte[1024] buf = void;

        this(StreamSocketFD client)
        {
                this.client = client;

                eventDriver.sockets.read(client, buf, IOMode.once, &onRead);
        }

        void write(ubyte[] data)
        {
eventDriver.sockets.write(client, data, IOMode.all, &onWriteFinished);
        }

void onWriteFinished(StreamSocketFD fd, IOStatus status, size_t len)
        {
                writeln("Send size: ", len);
        }

        void onRead(StreamSocketFD, IOStatus status, size_t bytes_read)
        {
                if (status != IOStatus.ok) {
                        writeln("Client disconnect");
                        eventDriver.sockets.shutdown(client, true, true);
                        eventDriver.sockets.releaseRef(client);
                        return;
                }

                this.write(buf[0..bytes_read]);
                
                eventDriver.sockets.read(client, buf, IOMode.once, &onRead);
        }
}
```

error code:
```log
dub build
Starting Performing "debug" build using ldc2 for aarch64, arm_hardfloat. Up-to-date taggedalgebraic 0.11.22: target for configuration [library] is up to date. Up-to-date eventcore 0.9.28: target for configuration [cfrunloop] is up to date. Building eventcoredemo ~master: building configuration [application] source/main.d(12,50): Error: none of the overloads of `listenStream` are callable using argument types `(InternetAddress, void delegate(StreamListenSocketFD a0, StreamSocketFD a1, scope RefAddress a2) @system)`
../../../.dub/packages/eventcore/0.9.28/eventcore/source/eventcore/driver.d(213,23):
        Candidates are: `eventcore.driver.EventDriverSockets.listenStream(scope 
Address bind_address, StreamListenOptions options, void 
delegate(StreamListenSocketFD, StreamSocketFD, scope RefAddress remote_address) 
nothrow @safe on_accept)`
../../../.dub/packages/eventcore/0.9.28/eventcore/source/eventcore/driver.d(215,29):
                        `eventcore.driver.EventDriverSockets.listenStream(scope 
Address bind_address, void delegate(StreamListenSocketFD, StreamSocketFD, scope 
RefAddress remote_address) nothrow @safe on_accept)`
../../../.dub/packages/eventcore/0.9.28/eventcore/source/eventcore/drivers/posix/sockets.d(233,38):
                        
`eventcore.drivers.posix.sockets.PosixEventDriverSockets!(CFRunLoopEventLoop).PosixEventDriverSockets.listenStream(scope
 Address address, StreamListenOptions options, void 
delegate(StreamListenSocketFD, StreamSocketFD, scope RefAddress remote_address) 
nothrow @safe on_accept)`
source/main.d(25,18): Error: function `main.Connection.write(ubyte[] data)` is not callable using argument types `(string)` source/main.d(25,18): cannot pass argument `"Welcome to use my echo server."` of type `string` to parameter `ubyte[] data` source/main.d(38,27): Error: function `eventcore.drivers.posix.sockets.PosixEventDriverSockets!(CFRunLoopEventLoop).PosixEventDriverSockets.read(StreamSocketFD socket, ubyte[] buffer, IOMode mode, void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_read_finish)` is not callable using argument types `(StreamSocketFD, ubyte[1024], IOMode, void delegate(StreamSocketFD, IOStatus status, ulong bytes_read))` source/main.d(38,27): cannot pass argument `&this.onRead` of type `void delegate(StreamSocketFD, IOStatus status, ulong bytes_read)` to parameter `void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_read_finish` source/main.d(43,28): Error: function `eventcore.drivers.posix.sockets.PosixEventDriverSockets!(CFRunLoopEventLoop).PosixEventDriverSockets.write(StreamSocketFD socket, const(ubyte)[] buffer, IOMode mode, void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_write_finish)` is not callable using argument types `(StreamSocketFD, ubyte[], IOMode, void delegate(StreamSocketFD fd, IOStatus status, ulong len))` source/main.d(43,28): cannot pass argument `&this.onWriteFinished` of type `void delegate(StreamSocketFD fd, IOStatus status, ulong len)` to parameter `void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_write_finish` source/main.d(62,27): Error: function `eventcore.drivers.posix.sockets.PosixEventDriverSockets!(CFRunLoopEventLoop).PosixEventDriverSockets.read(StreamSocketFD socket, ubyte[] buffer, IOMode mode, void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_read_finish)` is not callable using argument types `(StreamSocketFD, ubyte[1024], IOMode, void delegate(StreamSocketFD __param_0, IOStatus status, ulong bytes_read))` source/main.d(62,27): cannot pass argument `&this.onRead` of type `void delegate(StreamSocketFD __param_0, IOStatus status, ulong bytes_read)` to parameter `void delegate(StreamSocketFD, IOStatus, ulong) nothrow @safe on_read_finish`
Error ldc2 failed with exit code 1.
```

How to fix it? than you ;)

Reply via email to