Package com.tnsai.protocols.fipa
Class ContractNetProtocol
java.lang.Object
com.tnsai.protocols.fipa.ContractNetProtocol
- All Implemented Interfaces:
ConversationProtocol
FIPA Contract Net Interaction Protocol.
Implements the contract net protocol for task delegation through a bidding process. An initiator issues a CFP (call for proposals) and selects the best proposal.
Protocol Flow
Initiator Participant(s)
| |
|--- CFP ------------------->| (to all)
| |
|invalid input: '<'-- PROPOSE ----------------|
| or REFUSE |
| |
|--- ACCEPT-PROPOSAL ------->| (to winner)
|--- REJECT-PROPOSAL ------->| (to others)
| |
|invalid input: '<'-- INFORM/FAILURE ---------|
| |
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.tnsai.protocols.fipa.ConversationProtocol
ConversationProtocol.ProtocolState -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateAcceptance(FIPAMessage proposal) Creates an acceptance for a proposal.Creates a CFP message for multiple receivers.createInitialMessage(String sender, String receiver, String content) Creates the initial message for this protocol.createProposal(FIPAMessage cfp, String proposal) Creates a proposal response to a CFP.createRejection(FIPAMessage proposal, String reason) Creates a rejection for a proposal.createResponse(FIPAMessage original, FIPAPerformative performative, String content) Creates a response to a message.Gets the protocol description.Gets valid initiating performatives for this protocol.Gets message history for this conversation.getName()Gets the protocol name.Gets all received proposals.Gets the final result if available.Gets the selected participant (winner).getState()Gets the current protocol state.getValidationErrors(FIPAMessage message) Gets validation errors for a message.getValidResponses(FIPAPerformative initiator) Gets valid response performatives for a given initiator.booleanChecks if protocol is complete.booleanChecks if protocol succeeded.booleanisValidMessage(FIPAMessage message) Validates if a message is valid for this protocol.booleanisValidResponse(FIPAMessage request, FIPAMessage response) Validates if a response is valid for a given request.voidprocessMessage(FIPAMessage message) Processes an incoming message and updates state.voidreset()Resets the protocol for reuse.booleanselectProposal(String participantId) Selects a proposal as the winner.
-
Constructor Details
-
ContractNetProtocol
public ContractNetProtocol()
-
-
Method Details
-
getName
Description copied from interface:ConversationProtocolGets the protocol name.- Specified by:
getNamein interfaceConversationProtocol- Returns:
- protocol identifier (e.g., "fipa-request")
-
getDescription
Description copied from interface:ConversationProtocolGets the protocol description.- Specified by:
getDescriptionin interfaceConversationProtocol- Returns:
- human-readable description
-
getInitiatingPerformatives
Description copied from interface:ConversationProtocolGets valid initiating performatives for this protocol.- Specified by:
getInitiatingPerformativesin interfaceConversationProtocol- Returns:
- set of valid initial performatives
-
getValidResponses
Description copied from interface:ConversationProtocolGets valid response performatives for a given initiator.- Specified by:
getValidResponsesin interfaceConversationProtocol- Parameters:
initiator- the initiating performative- Returns:
- set of valid response performatives
-
getState
Description copied from interface:ConversationProtocolGets the current protocol state.- Specified by:
getStatein interfaceConversationProtocol- Returns:
- current state
-
getMessageHistory
Description copied from interface:ConversationProtocolGets message history for this conversation.- Specified by:
getMessageHistoryin interfaceConversationProtocol- Returns:
- ordered list of messages
-
createInitialMessage
Description copied from interface:ConversationProtocolCreates the initial message for this protocol.- Specified by:
createInitialMessagein interfaceConversationProtocol- Parameters:
sender- sender agent IDreceiver- receiver agent IDcontent- message content- Returns:
- initial message
-
createCFP
Creates a CFP message for multiple receivers.- Parameters:
sender- initiator IDtaskDescription- task description- Returns:
- CFP message (send to each receiver)
-
createResponse
public FIPAMessage createResponse(FIPAMessage original, FIPAPerformative performative, String content) Description copied from interface:ConversationProtocolCreates a response to a message.- Specified by:
createResponsein interfaceConversationProtocol- Parameters:
original- original message to respond toperformative- response performativecontent- response content- Returns:
- response message
-
createProposal
Creates a proposal response to a CFP.- Parameters:
cfp- original CFPproposal- proposal content- Returns:
- propose message
-
createAcceptance
Creates an acceptance for a proposal.- Parameters:
proposal- proposal to accept- Returns:
- accept message
-
createRejection
Creates a rejection for a proposal.- Parameters:
proposal- proposal to rejectreason- rejection reason- Returns:
- reject message
-
getProposals
Gets all received proposals.- Returns:
- map of sender IDs to proposals
-
getSelectedParticipant
Gets the selected participant (winner).- Returns:
- selected participant ID or null
-
selectProposal
Selects a proposal as the winner.- Parameters:
participantId- participant to select- Returns:
- true if valid selection
-
isValidMessage
Description copied from interface:ConversationProtocolValidates if a message is valid for this protocol.- Specified by:
isValidMessagein interfaceConversationProtocol- Parameters:
message- message to validate- Returns:
- true if valid
-
isValidResponse
Description copied from interface:ConversationProtocolValidates if a response is valid for a given request.- Specified by:
isValidResponsein interfaceConversationProtocol- Parameters:
request- original requestresponse- response to validate- Returns:
- true if valid response
-
getValidationErrors
Description copied from interface:ConversationProtocolGets validation errors for a message.- Specified by:
getValidationErrorsin interfaceConversationProtocol- Parameters:
message- message to check- Returns:
- list of validation errors (empty if valid)
-
processMessage
Description copied from interface:ConversationProtocolProcesses an incoming message and updates state.- Specified by:
processMessagein interfaceConversationProtocol- Parameters:
message- message to process
-
isComplete
public boolean isComplete()Description copied from interface:ConversationProtocolChecks if protocol is complete.- Specified by:
isCompletein interfaceConversationProtocol- Returns:
- true if conversation is finished
-
isSuccessful
public boolean isSuccessful()Description copied from interface:ConversationProtocolChecks if protocol succeeded.- Specified by:
isSuccessfulin interfaceConversationProtocol- Returns:
- true if completed successfully
-
getResult
Description copied from interface:ConversationProtocolGets the final result if available.- Specified by:
getResultin interfaceConversationProtocol- Returns:
- optional result
-
reset
public void reset()Description copied from interface:ConversationProtocolResets the protocol for reuse.- Specified by:
resetin interfaceConversationProtocol
-