Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sample Cleanup: Modernize Akka.Remote Chat Sample #3609

Merged
merged 3 commits into from
Oct 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 33 additions & 41 deletions src/examples/Chat/ChatClient/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ static void Main(string[] args)
var config = ConfigurationFactory.ParseString(@"
akka {
actor {
provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
provider = remote
}
remote {
dot-netty.tcp {
Expand Down Expand Up @@ -75,56 +75,48 @@ static void Main(string[] args)
}
}

class ChatClientActor : TypedActor,
IHandle<ConnectRequest>,
IHandle<ConnectResponse>,
IHandle<NickRequest>,
IHandle<NickResponse>,
IHandle<SayRequest>,
IHandle<SayResponse>, ILogReceive
class ChatClientActor : ReceiveActor, ILogReceive
{
private string _nick = "Roggan";
private readonly ActorSelection _server = Context.ActorSelection("akka.tcp://MyServer@localhost:8081/user/ChatServer");

public void Handle(ConnectResponse message)
public ChatClientActor()
{
Console.WriteLine("Connected!");
Console.WriteLine(message.Message);
}

public void Handle(NickRequest message)
{
message.OldUsername = this._nick;
Console.WriteLine("Changing nick to {0}", message.NewUsername);
this._nick = message.NewUsername;
_server.Tell(message);
}
Receive<ConnectRequest>(cr =>
{
Console.WriteLine("Connecting....");
_server.Tell(cr);
});

public void Handle(NickResponse message)
{
Console.WriteLine("{0} is now known as {1}", message.OldUsername, message.NewUsername);
}
Receive<ConnectResponse>(rsp =>
{
Console.WriteLine("Connected!");
Console.WriteLine(rsp.Message);
});

public void Handle(SayResponse message)
{
Console.WriteLine("{0}: {1}", message.Username, message.Text);
}
Receive<NickRequest>(nr =>
{
nr.OldUsername = _nick;
Console.WriteLine("Changing nick to {0}", nr.NewUsername);
_nick = nr.NewUsername;
_server.Tell(nr);
});

public void Handle(ConnectRequest message)
{
Console.WriteLine("Connecting....");
_server.Tell(message);
}
Receive<NickResponse>(nrsp =>
{
Console.WriteLine("{0} is now known as {1}", nrsp.OldUsername, nrsp.NewUsername);
});

public void Handle(SayRequest message)
{
message.Username = this._nick;
_server.Tell(message);
}
Receive<SayRequest>(sr =>
{
sr.Username = _nick;
_server.Tell(sr);
});

public void Handle(Terminated message)
{
Console.Write("Server died");
Receive<SayResponse>(srsp =>
{
Console.WriteLine("{0}: {1}", srsp.Username, srsp.Text);
});
}
}
}
Expand Down
13 changes: 0 additions & 13 deletions src/examples/Chat/ChatMessages/Messages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,4 @@ public class SayResponse
public string Username { get; set; }
public string Text { get; set; }
}

public class ChannelsRequest
{
}

public class ChannelsResponse
{
public IActorRef[] channels { get; set; }
}

public class Disconnect
{
}
}
70 changes: 27 additions & 43 deletions src/examples/Chat/ChatServer/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ static void Main(string[] args)
var config = ConfigurationFactory.ParseString(@"
akka {
actor {
provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
provider = remote
}
remote {
dot-netty.tcp {
Expand All @@ -34,64 +34,48 @@ static void Main(string[] args)

using (var system = ActorSystem.Create("MyServer", config))
{
system.ActorOf<ChatServerActor>("ChatServer");
system.ActorOf(Props.Create(() => new ChatServerActor()), "ChatServer");

Console.ReadLine();
}
}
}

class ChatServerActor : TypedActor,
IHandle<SayRequest>,
IHandle<ConnectRequest>,
IHandle<NickRequest>,
IHandle<Disconnect>,
IHandle<ChannelsRequest>,
ILogReceive

class ChatServerActor : ReceiveActor, ILogReceive
{
private readonly HashSet<IActorRef> _clients = new HashSet<IActorRef>();

public void Handle(SayRequest message)
public ChatServerActor()
{
// Console.WriteLine("User {0} said {1}",message.Username , message.Text);
var response = new SayResponse
Receive<SayRequest>(message =>
{
Username = message.Username,
Text = message.Text,
};
foreach (var client in _clients) client.Tell(response, Self);
}
var response = new SayResponse
{
Username = message.Username,
Text = message.Text,
};
foreach (var client in _clients) client.Tell(response, Self);
});

public void Handle(ConnectRequest message)
{
// Console.WriteLine("User {0} has connected", message.Username);
_clients.Add(this.Sender);
Sender.Tell(new ConnectResponse
Receive<ConnectRequest>(message =>
{
Message = "Hello and welcome to Akka .NET chat example",
}, Self);
}
_clients.Add(Sender);
Sender.Tell(new ConnectResponse
{
Message = "Hello and welcome to Akka.NET chat example",
}, Self);
});

public void Handle(NickRequest message)
{
var response = new NickResponse
Receive<NickRequest>(message =>
{
OldUsername = message.OldUsername,
NewUsername = message.NewUsername,
};

foreach (var client in _clients) client.Tell(response, Self);
}

public void Handle(Disconnect message)
{

}

public void Handle(ChannelsRequest message)
{
var response = new NickResponse
{
OldUsername = message.OldUsername,
NewUsername = message.NewUsername,
};

foreach (var client in _clients) client.Tell(response, Self);
});
}
}
}
Expand Down