summaryrefslogtreecommitdiff
path: root/TAO/examples/POA/Default_Servant/File_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/POA/Default_Servant/File_i.cpp')
-rw-r--r--TAO/examples/POA/Default_Servant/File_i.cpp114
1 files changed, 69 insertions, 45 deletions
diff --git a/TAO/examples/POA/Default_Servant/File_i.cpp b/TAO/examples/POA/Default_Servant/File_i.cpp
index 42096598455..3e4fc0f883f 100644
--- a/TAO/examples/POA/Default_Servant/File_i.cpp
+++ b/TAO/examples/POA/Default_Servant/File_i.cpp
@@ -24,10 +24,10 @@ FileImpl::System::System (PortableServer::POA_ptr poa)
// Create the Default Descriptor Servant
fd_servant_ (poa)
{
- ACE_DECLARE_NEW_CORBA_ENV;
+ CORBA::Environment env;
// set the default servant of the POA
- poa->set_servant (&this->fd_servant_, ACE_TRY_ENV);
- ACE_CHECK;
+ poa->set_servant (&this->fd_servant_, env);
+ ACE_ASSERT (env.exception () == 0);
}
FileImpl::System::~System (void)
@@ -35,15 +35,16 @@ FileImpl::System::~System (void)
}
PortableServer::POA_ptr
-FileImpl::System::_default_POA (CORBA::Environment &)
+FileImpl::System::_default_POA (CORBA::Environment &env)
{
+ ACE_UNUSED_ARG (env);
return PortableServer::POA::_duplicate (this->poa_.in ());
}
File::Descriptor_ptr
FileImpl::System::open (const char *file_name,
CORBA::Long flags,
- CORBA::Environment &ACE_TRY_ENV)
+ CORBA::Environment &env)
{
// Do an ACE_OS::open
ACE_HANDLE file_descriptor = ACE_OS::open (file_name,
@@ -51,13 +52,9 @@ FileImpl::System::open (const char *file_name,
if (file_descriptor == ACE_INVALID_HANDLE)
{
- //CORBA::Exception exception = File::IOError (errno);
- ACE_THROW_RETURN (File::IOError (), 0);
-
- /* ACE_NEW_THROW_EX (exception,
- File::IOError (errno),
- exception);
- ACE_CHECK_RETURN (0);*/
+ CORBA::Exception *exception = new File::IOError (errno);
+ env.exception (exception);
+ return 0;
}
char file_descriptor_buffer[BUFSIZ];
@@ -76,14 +73,16 @@ FileImpl::System::open (const char *file_name,
CORBA::Object_var obj =
this->poa_->create_reference_with_id (oid.in (),
"IDL:File/Descriptor:1.0",
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (File::Descriptor::_nil ());
+ env);
+ if (env.exception () != 0)
+ return File::Descriptor::_nil ();
// Narrow the object reference to a File Descriptor
File::Descriptor_var fd =
- File::Descriptor::_narrow (obj.in (), ACE_TRY_ENV);
+ File::Descriptor::_narrow (obj.in (), env);
- ACE_CHECK_RETURN (File::Descriptor::_nil ());
+ if (env.exception () != 0)
+ return File::Descriptor::_nil ();
return fd._retn ();
}
@@ -99,27 +98,30 @@ FileImpl::Descriptor::~Descriptor (void)
}
PortableServer::POA_ptr
-FileImpl::Descriptor::_default_POA (CORBA::Environment &)
+FileImpl::Descriptor::_default_POA (CORBA::Environment &env)
{
+ ACE_UNUSED_ARG (env);
return PortableServer::POA::_duplicate (this->poa_.in ());
}
//Extracts the ACE_HANDLE from the passed object reference
ACE_HANDLE
-FileImpl::Descriptor::fd (CORBA::Environment &ACE_TRY_ENV)
+FileImpl::Descriptor::fd (CORBA::Environment &env)
{
// Get a reference to myself
- File::Descriptor_var me = this->_this (ACE_TRY_ENV);
+ File::Descriptor_var me = this->_this (env);
- ACE_CHECK_RETURN (ACE_INVALID_HANDLE);
+ if (env.exception () != 0)
+ return ACE_INVALID_HANDLE;
// Get the ObjectId from the reference
PortableServer::ObjectId_var oid =
- this->poa_->reference_to_id (me.in (), ACE_TRY_ENV);
-
- ACE_CHECK_RETURN (ACE_INVALID_HANDLE);
+ this->poa_->reference_to_id (me.in (), env);
+
+ if (env.exception () != 0)
+ return ACE_INVALID_HANDLE;
- // Convert the ObjectId to a string
+ // Convert the ObjectId to a string
CORBA::String_var s =
PortableServer::ObjectId_to_string (oid.in ());
@@ -129,10 +131,12 @@ FileImpl::Descriptor::fd (CORBA::Environment &ACE_TRY_ENV)
CORBA::Long
FileImpl::Descriptor::write (const File::Descriptor::DataBuffer &buffer,
- CORBA::Environment &ACE_TRY_ENV)
+ CORBA::Environment &env)
{
- ACE_HANDLE file_descriptor = this->fd (ACE_TRY_ENV);
- ACE_CHECK_RETURN (0);
+ ACE_HANDLE file_descriptor = this->fd (env);
+
+ if (env.exception () != 0)
+ return 0;
const CORBA::Octet *data = &buffer[0];
@@ -141,16 +145,22 @@ FileImpl::Descriptor::write (const File::Descriptor::DataBuffer &buffer,
buffer.length ());
if (len > 0)
return len;
-
- ACE_THROW_RETURN (File::IOError (), 0);
+ else
+ {
+ CORBA::Exception *exception = new File::IOError (errno);
+ env.exception (exception);
+ return 0;
+ }
}
File::Descriptor::DataBuffer *
FileImpl::Descriptor::read (CORBA::Long num_bytes,
- CORBA::Environment &ACE_TRY_ENV)
+ CORBA::Environment &env)
{
- ACE_HANDLE file_descriptor = this->fd (ACE_TRY_ENV);
- ACE_CHECK_RETURN (0);
+ ACE_HANDLE file_descriptor = this->fd (env);
+
+ if (env.exception () != 0)
+ return 0;
CORBA::Octet *buffer = File::Descriptor::DataBuffer::allocbuf (num_bytes);
int length = ACE_OS::read (file_descriptor, buffer, num_bytes);
@@ -160,40 +170,54 @@ FileImpl::Descriptor::read (CORBA::Long num_bytes,
length,
buffer,
1);
-
- File::Descriptor::DataBuffer::freebuf (buffer);
- ACE_THROW_RETURN (File::IOError (), 0);
+ else
+ {
+ File::Descriptor::DataBuffer::freebuf (buffer);
+ CORBA::Exception *exception = new File::IOError (errno);
+ env.exception (exception);
+ return 0;
+ }
}
CORBA::ULong
FileImpl::Descriptor::lseek (CORBA::ULong offset,
CORBA::Long whence,
- CORBA::Environment &ACE_TRY_ENV)
+ CORBA::Environment &env)
{
- ACE_HANDLE file_descriptor = this->fd (ACE_TRY_ENV);
- ACE_CHECK_RETURN (0);
+ ACE_HANDLE file_descriptor = this->fd (env);
+
+ if (env.exception () != 0)
+ return 0;
CORBA::Long result = (CORBA::Long) ACE_OS::lseek (file_descriptor,
offset,
whence);
if (result == -1)
- ACE_THROW_RETURN (File::IOError (), 0);
-
- return (CORBA::ULong) result;
+ {
+ CORBA::Exception *exception = new File::IOError (errno);
+ env.exception (exception);
+ return 0;
+ }
+ else
+ return (CORBA::ULong) result;
}
void
-FileImpl::Descriptor::destroy (CORBA::Environment &ACE_TRY_ENV)
+FileImpl::Descriptor::destroy (CORBA::Environment &env)
{
// Get the ACE_HANDLE for this object reference
- ACE_HANDLE file_descriptor = this->fd (ACE_TRY_ENV);
- ACE_CHECK;
+ ACE_HANDLE file_descriptor = this->fd (env);
+
+ if (env.exception () != 0)
+ return;
//close the file corresponding to this object reference
int result = ACE_OS::close (file_descriptor);
if (result != 0)
{
- ACE_THROW (File::IOError ());
+ CORBA::Exception *exception = new File::IOError (errno);
+ env.exception (exception);
+ return;
}
}