// 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!")