隐式记录scala中actor接收的消息

时间:2012-11-11 08:03:24

标签: scala actor message-passing

我是这个花哨的语言scala的新手,我正在尝试创建一个用于记录scala actor的库。我的库有一个Logger类,它扩展了Actor类。 因此,任何使用actor模型的Scala应用程序都可以从此类扩展,或者使用Actor类来扩展日志记录功能。 例如。 class MyClass扩展了Logger。 在我的Logger类中,我实现了这样的逻辑:每当有人向某个actor发送消息时,它就会被发送actor的日志文件记录下来。 为此,每当有人向另一个actor发送消息而不是调用scala send函数时,比如

caller ! msg

库的用户调用

send(caller,msg)

然后,库函数将在日志中为此消息创建一个条目。这很好用。 我希望为actor收到的消息添加类似的功能。也就是说,每当actor接收到消息时,库应该在日志文件中为所接收的消息创建条目。一种方法是每当用户收到一个方法时,他就可以显式地调用这样的日志方法,

while (true) {
   receive {
     case msg =>
       log(sender, msg)
       // do some stuff
   }
}

日志功能在日志中生成一个条目。 我希望用户不需要编写此行日志(sender,msg),以便库对用户透明,并且没有用户需要编写的添加代码,并且Logger类会隐式记录所有内容。 有没有办法实现这个目标? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

在Logger类中

覆盖方法receive,以便它调用log(sender, msg)然后调用super.receive()