@Override public LeaveGroupRequest build(short version) { return new LeaveGroupRequest(groupId, memberId, version); }
@Override public boolean matches(AbstractRequest body) { leaveGroupRequested.set(true); LeaveGroupRequest leaveRequest = (LeaveGroupRequest) body; return leaveRequest.groupId().equals(groupId); } }, new LeaveGroupResponse(Errors.NONE));
@Override public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) { short versionId = version(); switch (versionId) { case 0: return new LeaveGroupResponse(Errors.forException(e)); case 1: case 2: return new LeaveGroupResponse(throttleTimeMs, Errors.forException(e)); default: throw new IllegalArgumentException(String.format("Version %d is not valid. Valid versions for %s are 0 to %d", versionId, this.getClass().getSimpleName(), ApiKeys.LEAVE_GROUP.latestVersion())); } }
@Override protected Struct toStruct() { Struct struct = new Struct(ApiKeys.LEAVE_GROUP.requestSchema(version())); struct.set(GROUP_ID, groupId); struct.set(MEMBER_ID, memberId); return struct; } }
public static LeaveGroupRequest parse(ByteBuffer buffer, short version) { return new LeaveGroupRequest(ApiKeys.LEAVE_GROUP.parseRequest(version, buffer), version); }
private void handleLeaveGroupRequest(ChannelHandlerContext ctx, Request request) { LeaveGroupRequest leaveGroupRequest = (LeaveGroupRequest) request.getBody(); ResponseHeader responseHeader = new ResponseHeader(request.getHeader().correlationId()); // let the coordinator to handle leave-group coordinator.handleLeaveGroup( leaveGroupRequest.groupId(), leaveGroupRequest.memberId(), (errorCode) -> { LeaveGroupResponse response = new LeaveGroupResponse(errorCode); sendResponse(ctx, new Response(responseHeader, response)); }); }
return new HeartbeatRequest(struct, apiVersion); case LEAVE_GROUP: return new LeaveGroupRequest(struct, apiVersion); case SYNC_GROUP: return new SyncGroupRequest(struct, apiVersion);