void ServiceForExceptionWithAMapProcessor::process_methodThatThrowsAnException(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot)
{
  ServiceForExceptionWithAMap_methodThatThrowsAnException_args args;
  args.read(iprot);
  iprot->readMessageEnd();
  iprot->getTransport()->readEnd();

  ServiceForExceptionWithAMap_methodThatThrowsAnException_result result;
  try {
    iface_->methodThatThrowsAnException();
  } catch (ExceptionWithAMap &xwamap) {
    result.xwamap = xwamap;
    result.__isset.xwamap = true;
  } catch (const std::exception& e) {
    ::apache::thrift::TApplicationException x(e.what());
    oprot->writeMessageBegin("methodThatThrowsAnException", ::apache::thrift::protocol::T_EXCEPTION, seqid);
    x.write(oprot);
    oprot->writeMessageEnd();
    oprot->getTransport()->flush();
    oprot->getTransport()->writeEnd();
    return;
  }

  oprot->writeMessageBegin("methodThatThrowsAnException", ::apache::thrift::protocol::T_REPLY, seqid);
  result.write(oprot);
  oprot->writeMessageEnd();
  oprot->getTransport()->flush();
  oprot->getTransport()->writeEnd();
}
void ServiceForExceptionWithAMapProcessor::process_methodThatThrowsAnException(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext)
{
  void* ctx = NULL;
  if (eventHandler_.get() != NULL) {
    ctx = eventHandler_->getContext("ServiceForExceptionWithAMap.methodThatThrowsAnException", callContext);
  }
  ::apache::thrift::TProcessorContextFreer freer(eventHandler_.get(), ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException");

  if (eventHandler_.get() != NULL) {
    eventHandler_->preRead(ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException");
  }

  ServiceForExceptionWithAMap_methodThatThrowsAnException_args args;
  args.read(iprot);
  iprot->readMessageEnd();
  uint32_t bytes = iprot->getTransport()->readEnd();

  if (eventHandler_.get() != NULL) {
    eventHandler_->postRead(ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException", bytes);
  }

  ServiceForExceptionWithAMap_methodThatThrowsAnException_result result;
  try {
    iface_->methodThatThrowsAnException();
  } catch (ExceptionWithAMap &xwamap) {
    result.xwamap = xwamap;
    result.__isset.xwamap = true;
  } catch (const std::exception& e) {
    if (eventHandler_.get() != NULL) {
      eventHandler_->handlerError(ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException");
    }

    ::apache::thrift::TApplicationException x(e.what());
    oprot->writeMessageBegin("methodThatThrowsAnException", ::apache::thrift::protocol::T_EXCEPTION, seqid);
    x.write(oprot);
    oprot->writeMessageEnd();
    oprot->getTransport()->writeEnd();
    oprot->getTransport()->flush();
    return;
  }

  if (eventHandler_.get() != NULL) {
    eventHandler_->preWrite(ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException");
  }

  oprot->writeMessageBegin("methodThatThrowsAnException", ::apache::thrift::protocol::T_REPLY, seqid);
  result.write(oprot);
  oprot->writeMessageEnd();
  bytes = oprot->getTransport()->writeEnd();
  oprot->getTransport()->flush();

  if (eventHandler_.get() != NULL) {
    eventHandler_->postWrite(ctx, "ServiceForExceptionWithAMap.methodThatThrowsAnException", bytes);
  }
}