75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
|
|
// P2P実装 - 2引数制限対応版
|
||
|
|
|
||
|
|
print("=== P2P Two Args Version ===")
|
||
|
|
|
||
|
|
// メッセージオブジェクト - データと送信者を1つにまとめる
|
||
|
|
box Message {
|
||
|
|
init { type, data, sender }
|
||
|
|
|
||
|
|
setup(msgType, msgData, msgSender) {
|
||
|
|
me.type = msgType
|
||
|
|
me.data = msgData
|
||
|
|
me.sender = msgSender
|
||
|
|
print("Message created: " + msgType + " from " + msgSender)
|
||
|
|
}
|
||
|
|
|
||
|
|
getType() {
|
||
|
|
return me.type
|
||
|
|
}
|
||
|
|
|
||
|
|
getData() {
|
||
|
|
return me.data
|
||
|
|
}
|
||
|
|
|
||
|
|
getSender() {
|
||
|
|
return me.sender
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// MessageHub - 2引数のdeliverメソッド
|
||
|
|
box MessageHub {
|
||
|
|
init { name }
|
||
|
|
|
||
|
|
deliver(message) {
|
||
|
|
print("Hub delivering message:")
|
||
|
|
print(" Type: " + message.getType())
|
||
|
|
print(" Data: " + message.getData())
|
||
|
|
print(" From: " + message.getSender())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// PeerNode - メッセージオブジェクトを作成してsend
|
||
|
|
box PeerNode {
|
||
|
|
init { nodeId, hub }
|
||
|
|
|
||
|
|
setup(id, hubRef) {
|
||
|
|
me.nodeId = id
|
||
|
|
me.hub = hubRef
|
||
|
|
print("PeerNode setup: " + id)
|
||
|
|
}
|
||
|
|
|
||
|
|
send(msgType, msgData) {
|
||
|
|
print("PeerNode creating message...")
|
||
|
|
local msg
|
||
|
|
msg = new Message()
|
||
|
|
msg.setup(msgType, msgData, me.nodeId)
|
||
|
|
|
||
|
|
print("PeerNode sending message...")
|
||
|
|
me.hub.deliver(msg)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// テスト
|
||
|
|
print("Creating MessageHub...")
|
||
|
|
local hub
|
||
|
|
hub = new MessageHub()
|
||
|
|
|
||
|
|
print("Creating PeerNode...")
|
||
|
|
local alice
|
||
|
|
alice = new PeerNode()
|
||
|
|
alice.setup("Alice", hub)
|
||
|
|
|
||
|
|
print("Sending message...")
|
||
|
|
alice.send("hello", "Hi there!")
|
||
|
|
|
||
|
|
print("Test completed!")
|