Smalltalk 报告海边会议,如到期时间

Smalltalk 报告海边会议,如到期时间,smalltalk,seaside,visual-age,Smalltalk,Seaside,Visual Age,我如何显示一个报告,显示所有当前的海滨会话以及它们的预期到期时间 self session application sessionsDo: [:each | html text: 'Session For ',((each properties values at: 1) username),' Expires At: '. html render: (Time now addSeconds: (each application cache expiryPolicy timeout)). ht

我如何显示一个报告,显示所有当前的海滨会话以及它们的预期到期时间

self session application sessionsDo: [:each | 
html text: 'Session For ',((each properties values at: 1) username),' Expires At: '.
html render: (Time now addSeconds: (each application cache expiryPolicy timeout)).
html break].
但是,这显示了错误的结果,因为它显示所有会话都在同一时间过期,即从现在起600秒。在“剩余时间”我找不到其他方法

WWLD?(卢卡斯会怎么做)

韩元
Dusty

以下代码应该可以执行此操作:

WAApplication allInstances do: [ :application |
   application keysAndHandlersDo: [ :key :session |
      | policy table |
      policy := application cache expiryPolicy.
      table := policy instVarNamed: 'lastAccessTable'.
      Transcript 
        show: session; show: ' expires in '; 
        show: policy timeout - (Time totalSeconds - (table at: key));
        show: ' seconds'; cr ] ]
注意,上面的代码访问将来可能更改的内部数据结构。此外,您可能需要添加其他检查,以使其与您的设置一起工作


还请注意,您可能会得到负秒数。这意味着会话应该消失,但它还没有收获。

他确实如此。我们公司是卢卡斯·伦格利的忠实粉丝。