在我的代理程序中(使用jade),我有5个代理,其中一个代理是协调器,其他代理是设备代理。所有4个设备代理都将数组发送给协调器。
我希望协调器接收所有4个数组并将它们存储为单个数组。我该怎么办?
我通过ACLmessage(字符串)
发送消息答案 0 :(得分:0)
我建议协调员使用jade.proto.AchieveREInitiator行为。这允许与多个响应者进行简单的对话。
响应者,您的4个设备代理将以jade.proto.AchieveREResponder behiours回复。
代码应该在协调器端看起来像这样......
class CoordinatorRequestService extends AchieveREInitiator
{
String agentName;
String Service;
public CoordinatorRequestService (Agent a, ACLMessage msg,String Service ,String agentLocalID) {
super(a, msg);
// TODO Auto-generated constructor stub
this.agentName=agentLocalID;
this.Service=Service;
}
protected Vector prepareRequests(ACLMessage predefinedRequest)
{
ACLMessage requestmsg=new ACLMessage(ACLMessage.REQUEST);
requestmsg.addreciever(//add your agents here)
requestMsgVector.add(requestmsg);
return requestMsgVector;
}
protected void handleInform(ACLMessage inform)
{
recieveData=inform.extractDataRecieved();
globalarray.append(recieveData)
}
谷歌找到更多合同网的例子并实现沟通。
古德勒克
答案 1 :(得分:0)
private func configureAttributes(for attributes: UICollectionViewLayoutAttributes) {
guard let collection = collectionView else { return }
var visibleRect = CGRect()
visibleRect.origin = collection.contentOffset
visibleRect.size = collection.bounds.size
let collectionLeft = itemSize.width / 2
let offset = collection.contentOffset.x
let normalizedLeft = attributes.center.x - offset
let maxDistance = self.itemSize.width
let distance = min(abs(collectionLeft - normalizedLeft), maxDistance)
let ratio = (maxDistance - distance)/maxDistance
let scale = ratio * (1 - sideItemScale) + sideItemScale
var t = CATransform3DIdentity
t = CATransform3DScale(t, scale, scale, 1.0)
attributes.zIndex = Int(scale * 10)
attributes.transform3D = t
}
msg.setContentObject((Serializable)yourObject)
yourLocalObject=(yourObjectType) msg.getContentObject();