四好公路
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.9 KiB

3 years ago
'use strict';
function createStruct () {
var args = arguments[0];
return function () {
for (var i = 0; i < args.length; i++) {
this[args[i]] = arguments[i];
}
};
}
var KEYS = {
FetchRequest: ['topic', 'partition', 'offset', 'maxBytes'],
FetchResponse: ['topic', 'fetchPartitions'],
OffsetCommitRequest: ['topic', 'partition', 'offset', 'metadata', 'committing', 'autoCommitIntervalMs'],
OffsetCommitResponse: [],
TopicAndPartition: ['topic', 'partition'],
PartitionMetadata: ['topic', 'partition', 'leader', 'replicas', 'isr'],
Message: ['magic', 'attributes', 'key', 'value', 'timestamp'],
ProduceRequest: ['topic', 'partition', 'messages', 'attributes'],
Request: ['payloads', 'encoder', 'decoder', 'callback']
};
var ERROR_CODE = {
'0': 'NoError',
'-1': 'Unknown',
'1': 'OffsetOutOfRange',
'2': 'InvalidMessage',
'3': 'UnknownTopicOrPartition',
'4': 'InvalidMessageSize',
'5': 'LeaderNotAvailable',
'6': 'NotLeaderForPartition',
'7': 'RequestTimedOut',
'8': 'BrokerNotAvailable',
'9': 'ReplicaNotAvailable',
'10': 'MessageSizeTooLarge',
'11': 'StaleControllerEpochCode',
'12': 'OffsetMetadataTooLargeCode',
'14': 'GroupLoadInProgress',
'15': 'GroupCoordinatorNotAvailable',
'16': 'NotCoordinatorForGroup',
'17': 'InvalidTopic',
'18': 'RecordListTooLarge',
'19': 'NotEnoughReplicas',
'20': 'NotEnoughReplicasAfterAppend',
'21': 'InvalidRequiredAcks',
'22': 'IllegalGeneration',
'23': 'InconsistentGroupProtocol',
'25': 'UnknownMemberId',
'26': 'InvalidSessionTimeout',
'27': 'RebalanceInProgress',
'28': 'InvalidCommitOffsetSize',
'29': 'TopicAuthorizationFailed',
'30': 'GroupAuthorizationFailed',
'31': 'ClusterAuthorizationFailed'
};
var GROUP_ERROR = {
GroupCoordinatorNotAvailable: require('../errors/GroupCoordinatorNotAvailableError'),
IllegalGeneration: require('../errors/IllegalGenerationError'),
NotCoordinatorForGroup: require('../errors/NotCoordinatorForGroupError'),
GroupLoadInProgress: require('../errors/GroupLoadInProgressError'),
UnknownMemberId: require('../errors/UnknownMemberIdError'),
RebalanceInProgress: require('../errors/RebalanceInProgressError')
};
var REQUEST_TYPE = {
produce: 0,
fetch: 1,
offset: 2,
metadata: 3,
leader: 4,
stopReplica: 5,
updateMetadata: 6,
controlledShutdown: 7,
offsetCommit: 8,
offsetFetch: 9,
groupCoordinator: 10,
joinGroup: 11,
heartbeat: 12,
leaveGroup: 13,
syncGroup: 14,
describeGroups: 15,
listGroups: 16,
saslHandshake: 17,
apiVersions: 18,
createTopics: 19,
deleteTopics: 20
};
Object.keys(KEYS).forEach(function (o) {
exports[o] = createStruct(KEYS[o]);
});
exports.KEYS = KEYS;
exports.ERROR_CODE = ERROR_CODE;
exports.GROUP_ERROR = GROUP_ERROR;
exports.REQUEST_TYPE = REQUEST_TYPE;
exports.KeyedMessage = function KeyedMessage (key, value) {
exports.Message.call(this, 0, 0, key, value, Date.now());
};