in src/Explorer/Graph/GraphExplorerComponent/GremlinSimpleClient.ts [146:243]
public onMessage(msg: MessageEvent) {
if (!msg) {
if (this.params.failureCallback) {
this.params.failureCallback(null, "onMessage called with no message");
}
return;
}
const rawMessage = this.decodeMessage(msg);
if (!rawMessage) {
return;
}
const requestId = rawMessage.requestId;
const statusCode = rawMessage.status.code;
const statusMessage = rawMessage.status.message;
const result: Result = {
requestId: requestId,
data: rawMessage.result ? rawMessage.result.data : null,
requestCharge: rawMessage.status.attributes[GremlinSimpleClient.requestChargeHeader],
};
if (!this.pendingRequests[requestId]) {
if (this.params.failureCallback) {
this.params.failureCallback(
result,
`Received response for missing or closed request: ${requestId} code:${statusCode} message:${statusMessage}`,
);
}
return;
}
switch (statusCode) {
case 200: // Success
delete this.pendingRequests[requestId];
if (this.params.successCallback) {
this.params.successCallback(result);
}
break;
case 204: // No content
delete this.pendingRequests[requestId];
if (this.params.successCallback) {
result.data = null;
this.params.successCallback(result);
}
break;
case 206: // Partial content
if (this.params.progressCallback) {
this.params.progressCallback(result);
}
break;
case 407: // Request authentication
const challengeResponse = this.buildChallengeResponse(this.pendingRequests[requestId]);
this.sendGremlinMessage(challengeResponse);
break;
case 401: // Unauthorized
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Unauthorized: ${statusMessage}`);
}
break;
case 498: // Malformed request
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Malformed request: ${statusMessage}`);
}
break;
case 500: // Server error
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Server error: ${statusMessage}`);
}
break;
case 597: // Script eval error
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Script eval error: ${statusMessage}`);
}
break;
case 598: // Server timeout
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Server timeout: ${statusMessage}`);
}
break;
case 599: // Server serialization error
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Server serialization error: ${statusMessage}`);
}
break;
default:
delete this.pendingRequests[requestId];
if (this.params.failureCallback) {
this.params.failureCallback(result, `Error with status code: ${statusCode}. Message: ${statusMessage}`);
}
break;
}
}