blob: 94223e35441d3158e525a32695358de62e41ed7d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var util = require('util');
var Type = exports.Type = {
STOP: 0,
VOID: 1,
BOOL: 2,
BYTE: 3,
I08: 3,
DOUBLE: 4,
I16: 6,
I32: 8,
I64: 10,
STRING: 11,
UTF7: 11,
STRUCT: 12,
MAP: 13,
SET: 14,
LIST: 15,
UTF8: 16,
UTF16: 17,
}
exports.MessageType = {
CALL: 1,
REPLY: 2,
EXCEPTION: 3,
ONEWAY: 4,
}
var TException = exports.TException = function(message) {
Error.call(this, message);
this.name = 'TException';
}
util.inherits(TException, Error);
var TApplicationExceptionType = exports.TApplicationExceptionType = {
UNKNOWN: 0,
UNKNOWN_METHOD: 1,
INVALID_MESSAGE_TYPE: 2,
WRONG_METHOD_NAME: 3,
BAD_SEQUENCE_ID: 4,
MISSING_RESULT: 5,
INTERNAL_ERROR: 6,
PROTOCOL_ERROR: 7,
INVALID_TRANSFORM: 8,
INVALID_PROTOCOL: 9,
UNSUPPORTED_CLIENT_TYPE: 10
}
var TApplicationException = exports.TApplicationException = function(type, message) {
TException.call(this, message);
this.type = type || TApplicationExceptionType.UNKNOWN;
this.name = 'TApplicationException';
}
util.inherits(TApplicationException, TException);
TApplicationException.prototype.read = function(input) {
var ftype
var fid
var ret = input.readStructBegin('TApplicationException')
while(1){
ret = input.readFieldBegin()
if(ret.ftype == Type.STOP)
break
var fid = ret.fid
switch(fid){
case 1:
if( ret.ftype == Type.STRING ){
ret = input.readString()
this.message = ret
} else {
ret = input.skip(ret.ftype)
}
break
case 2:
if( ret.ftype == Type.I32 ){
ret = input.readI32()
this.type = ret
} else {
ret = input.skip(ret.ftype)
}
break
default:
ret = input.skip(ret.ftype)
break
}
input.readFieldEnd()
}
input.readStructEnd()
}
TApplicationException.prototype.write = function(output){
output.writeStructBegin('TApplicationException');
if (this.message) {
output.writeFieldBegin('message', Type.STRING, 1)
output.writeString(this.message)
output.writeFieldEnd()
}
if (this.code) {
output.writeFieldBegin('type', Type.I32, 2)
output.writeI32(this.code)
output.writeFieldEnd()
}
output.writeFieldStop()
output.writeStructEnd()
}
exports.objectLength = function(obj) {
return Object.keys(obj).length;
}
exports.inherits = function(constructor, superConstructor) {
util.inherits(constructor, superConstructor);
}