> Platform specific class will only ever be called from C++ interally and never 
> by external C applications

+1.

Samisa...


On Wed, 12 Jan 2005 09:59:11 +0000, Mark Whitlock
<[EMAIL PROTECTED]> wrote:
> 
> 
> Hi,
> The generated C stubs can be compiled with a C compiler and will not need a
> C++ compiler. The C support is being separated out from the Axis C++ engine
> into a separate DLL/shared library. So C applications will link with
> AxisClientC.dll.
> 
> Currently the PlatformAutoSense.hpp and other platform header files are not
> externalised (they are in src not include) so C/C++ generated stubs cannot
> use them. Any platform support is in GDefine.hpp or AxisUserAPI.hpp. I'm
> not proposing to change this so the Platform specific class will only ever
> be called from C++ interally and never by external C applications.
> Mark
> Mark Whitlock
> IBM
> 
> ----- Forwarded by Mark Whitlock/UK/IBM on 12/01/2005 09:43 -----
> 
>              Nadir Amra
>              <[EMAIL PROTECTED]>
>                                                                         To 
>              12/01/2005 06:58          "Apache AXIS C Developers List"
>                                        <[email protected]>
>                                                                         cc
>              Please respond to
>               "Apache AXIS C                                       Subject 
>              Developers List"          RE: Platform specific class
> 
> 
> I guess I would like to tackle the question of whether the "generated C
> stubs can be compiled by just using a C compiler?".
> 
> I guess the person working on C stub generation needs to answer that.
> However, even if customer requires a C++ compiler, generating C stubs is
> still useful.  Yes, the customer would have to compile C++ code, but does
> not have to understand what the C++ code is doing, as long as customer has
> the ability to call a C stub to access a Web Service.  That is the most
> important thing.
> 
> Obviously, I would prefer a purely C implementation for C stub generation,
> which means Axis would have to provide a C interface to the Axis engine
> that is compiled with C++ compiler (the C interface would be wrapper'ed
> with extern "C").  The C interface then can access the C++ engine.  I
> thought that was the direction we were going on this, but I may be
> mistaken.
> 
> Even in a purely C stub interface, I think we can go with C++ abstraction
> as long as we provide C interfaces to the platform abstractions.  That is
> a possible solution.  Discussion on how the abstraction should be
> implemented should be left for later....unless you want to discuss now. We
> can start a new thread on that.
> 
> "Lilantha Darshana" <[EMAIL PROTECTED]> wrote on 01/10/2005 06:03:55 PM:
> 
> >
> > Let me make myself clear on what I said.
> > We can have the suggested bridge pattern to make axis transparent
> > from platform
> > specific functions. i.e decouple an abstraction from its real
> implementation.
> > This would make things more manageable esp. when OS/HW or
> > environment (runtime lib etc)
> > changes. Better option is to have layered architecture (PAL) and
> > grow up from it.
> > This is not a short term answer, but is a long term solution.
> >
> > One question will crops up when we convert platform support to
> > classes as pointed by
> > Nadir is: when we create C stubs if C stubs need these functions
> > what shall we do?
> > My question is, can the generated C stubs be compiled by just using
> > a C compiler (none C++)
> > and link it with axis libs? If not, my general assumption is:
> > creating C stubs does not
> > make much sense to me, if you do not have strong arguments of
> > supporting C stubs.
> > May be I have not heard of your perspectives on that(we can discuss)
> > We can create C++ stubs and call any external APIs from it - this
> > external API could
> > have been written by any language not just C. Often, with
> > webservices we would rather
> > require to call/access to external code written in different legacy
> > languages, eg. COBOL.
> > So, how you would suggest to call a service written in any other
> > language than C?
> > Therefore, my understanding is, if we additionally support C services
> that
> > does not solve all requirements what ppl try to resolve by using
> > webservices these days.
> >
> > APR is just one of the good option if we need some OS/HW dependent
> > functions and make
> > it transparent to axis when we impl. above design. So APR can be
> > used to impl. some
> > of the common functions in the base class. However, this is not
> > mandatory to go in to
> > any particular axis release, rather, is a thought whether we have
> > any complications
> > on using it. I'm afraid whether I could make much comment about APR
> > running on OS/400.
> > You IBM forks must know about it more than I do. Although, I have
> > seen that IBM provides
> > APR with HTTP server for IBM iSeries server. So my assumption is at
> least 90%
> > is compatible.
> >
> > Functions like:
> > #define PLATFORM_STRTOASC( x ) ( x )
> > #define PLATFORM_ASCTOSTR( x ) ( x )
> >
> > is required because we deal with ASCII/EBCDIC rather than with real
> > Unicode char sets
> > So my strong suggestion is we need moving to use Unicode (with
> > w_char) in place of bytes (char),
> > esp. in the Axis lib - In stubs we might want to support by giving some
> > functions to convert back and forth - or make call to a platform
> > abstraction layer that
> > we try to introduce here to make this conversion.
> >
> > Thoughts please??
> >
> > regards
> > -Lilantha
> >
> >
> > -----Original Message-----
> > From: Nadir Amra [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, January 06, 2005 4:11 PM
> > To: Apache AXIS C Developers List
> > Subject: RE: Platform specific class
> >
> >
> > Two things.
> >
> > First, the use of APR should be delayed until 1.6 or beyond because we
> > have too many things we need to get done for 1.5, at least from my
> > perspective. Major hurdle is I want to overcome is making code locale
> > sensitive.  Adding APR to the mix would be too much to handle.
> >
> > Second, I do not think we can get rid of the platform header files that
> > includes defines and typedefs, etc.  As far as making a platform class
> > with methods to say load library, get locale, etc...my only concern is
> if
> > C code needed to access any platform-specific APIs.  I know the AXIS
> > engine is purely C++, and if we can guarantee that C stubs do not need
> > access, then I would say yes going to the class implementation, although
> I
> > am not sure it would not be overkill.
> >
> > I do not mind in 1.5 changing macros to functions if you feel it is
> > necessary.  For example:
> >
> > In PlatformAutoSense.hpp, the APIs the platforms would need to implement
> 
> > would be listed:
> >
> > extern "C" platform_loadlibray( ...)
> > .
> > .
> > extern "C" platform_unloadlibrary(...)
> >
> >
> > And the implementation of the code would be in the separate files for
> each
> > platform, for example,
> >
> > \axis\axis-c\src\platforms\os400\PlatformSpecificOS400.cpp
> > \axis\axis-c\src\platforms\aix\PlatformSpecificAIX.cpp
> > .
> > .
> > .
> >
> > and in the ANT build, we can choose what platform cpp file to include
> > based on platform.
> >
> > In addition, this could be a separate DLL so that we do not have to
> > include in all DLLs used.
> >
> > Or, we can revisit this in a future release :-) and leave as-is.   There
> 
> > is not that much in the files at this point in time.
> >
> >
> >
> >
> >
> > John Hawkins <[EMAIL PROTECTED]>
> > 01/06/2005 04:58 AM
> > Please respond to
> > "Apache AXIS C Developers List"
> >
> >
> > To
> > "Apache AXIS C Developers List" <[email protected]>
> > cc
> >
> > Subject
> > RE: Platform specific class
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Hi Lilantha,
> >
> > Good point - I'd forgotten about that project !
> >
> > Yes, the library routines there are exactly what we are talking about
> here
> > e.g. they have a getErrorMessage equivelant and most of the other
> > functions
> > that we have defined in our platform objects now.
> > I can't see the equivelant of our ->
> > #define PLATFORM_STRTOASC( x ) ( x )
> > #define PLATFORM_ASCTOSTR( x ) ( x )
> >
> > in it but I might have missed it.
> >
> > If we were to use this library. We might still need some level of
> > "Platform" object because our platform stuff has filenames in it (but
> this
> > is minor and is more architecture dependent than OS dependent between
> Win
> > and non-windows) and it might even be solved I perhaaps just didn't see
> > the
> > routine in the APR ?
> >
> > I'm worried about using APR because it's quite big and they say they
> have
> > compiled it on windows and Unix. This may have ramifications for us as
> we
> > support OS400  - Nadir - thoughts please?
> >
> > It would be a big move to use APR and it might be better to do it slowly
> -
> > if at all depending on the OS400 issue. If OS400 has issues with APR (or
> > indeed other architectures/platforms) then we could have a compromise
> (not
> > a great one but a way forward) of moving to the platform model as
> > previously described but making the base class use APR. That way any
> > functions we had issues with or architectures/platforms that could not
> be
> > supported using APR could overwrite the methods.
> >
> > It's not great because it means that for every APR function that does
> not
> > work on all platforms we have to wrapper.
> >
> >
> > Thoughts please folks?
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > John Hawkins
> >
> >
> >
> >
> >
> >              "Lilantha
> >              Darshana"
> >              <[EMAIL PROTECTED] To
> >
> >              com>                      "Apache AXIS C Developers List"
> >                                        <[email protected]>
> >              05/01/2005 15:08 cc
> >
> >
> > Subject
> >
> >              Please respond to         RE: Platform specific class
> >               "Apache AXIS C
> >              Developers List"
> >
> >
> >
> >
> >
> >
> >
> >
> > +1 for a Bridge pattern to support. PAL - Platform Abstraction Layer.
> > Can we think of using APR (http://apr.apache.org/) for some of impl. ?
> >
> > regards
> > -Lilantha
> >
> >
> > -----Original Message-----
> > From: John Hawkins [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, January 05, 2005 6:38 AM
> > To: Apache AXIS C Developers List
> > Subject: Re: Platform specific class
> >
> >
> >
> >
> >
> >
> > I was thinking of something like the following:
> >
> > (See attached file: Platform hierarchy.jpeg)
> >
> > As you can see the IPlatform interface has base implementations for
> macros
> > and pure virtual methods only. This makes it really clear what the
> > platforms have to implement (with appropriate documentation at this
> > level).
> > The architecture layer (Windows, Unix etc.) then has platform specific
> > implementations of the methods and any overriding of the macros that may
> 
> > be
> > necessary.
> > The platform specific layer (WINNT, AIX, HP_UX etc.) then has any more
> > specific overrides that may be necessary over and above the architecture
> > layer.
> >
> > The Platform factory is the key class it is set out something like this
> > (Pseudo) ->
> >
> > class Platform
> > {
> >       static IPlatform platform;
> > #ifdef WIN32
> >       platform = Win32Platform
> > #endif
> >       /**
> >       *
> >       * returns the specific instance of Platform
> >       */
> >       static IPlatform getplatform();
> > }
> >
> >
> > Thoughts folks?
> >
> >
> > John Hawkins
> >
> >
> >
> >
> >
> >              Nadir Amra
> >              <[EMAIL PROTECTED]>
> > To
> >              04/01/2005 18:44          "Apache AXIS C Developers List"
> >                                        <[email protected]>
> > cc
> >              Please respond to
> >               "Apache AXIS C Subject
> >              Developers List"          Re: Transport specific class
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > I agree, and was thinking of doing that....although do we want a
> > PlatformServices class or just individual APIs?
> >
> > Nadir K. Amra
> > e-Business Technologies - IBM eServer i5/OS
> > IBM Rochester, MN,  (Tel. 507-253-0645, t/l 553-0645)
> > Internet: [EMAIL PROTECTED]
> >
> >
> >
> > John Hawkins <[EMAIL PROTECTED]>
> > 01/04/2005 12:40 PM
> > Please respond to
> > "Apache AXIS C Developers List"
> >
> >
> > To
> > [email protected]
> > cc
> >
> > Subject
> > Transport specific class
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Hi Folks,
> >
> > I've just been putting some error information into transport and
> realised
> > a
> > few things. (I'm going to start another thread re other issue.)
> >
> > I just implemented a "getErrorMessage" piece of code which should have
> > gone
> > into the platform specifics but it was quite chunky and did not sit
> easily
> > with being a macro.
> >
> > The Platform specific files are not classes - this surprised me - would
> it
> > be better to have a platform interface that the specific classes
> overrode
> > with their implementation? I understand that the macros are probably
> fine
> > for most things but if we had a platform class it would be more explicit
> > what each method had to achieve. These methods could also return values
> > more explicitly?
> >
> >
> >
> > John Hawkins
> >
> >
> >
> >
> >
> >
> >
> >
> 
>

Reply via email to