[ https://issues.apache.org/jira/browse/QPID-1338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Huston resolved QPID-1338. -------------------------------- Resolution: Fixed Fix Version/s: M4 The Windows-specific upper-level broker pieces are now in the svn repo; svn revision 709271 > Allow multiple platforms differences in C++ broker, client code > --------------------------------------------------------------- > > Key: QPID-1338 > URL: https://issues.apache.org/jira/browse/QPID-1338 > Project: Qpid > Issue Type: Improvement > Components: C++ Broker, C++ Client > Affects Versions: M4 > Reporter: Steve Huston > Priority: Minor > Fix For: M4 > > Attachments: broker.diff > > > This is in the context of adding Windows support to the C++ broker and > client. There are currently 3 places where platform differences may arise: > 1. Broker code (cpp/src/qpid/broker) > 2. Client code (cpp/src/qpid/client) > 3. Supporting code which may be common to both (cpp/src/qpid/sys) > The current general approach as I've been advised and encouraged by Andrew > Stitcher, primarily while working on the supporting (cpp/src/qpid/sys) level > code such as the I/O system is to define a common interface in a header file > (such as in cpp/src/qpid/sys) and then implement the class(es) differently in > platform-specific sources which reside in cpp/src/qpid/sys/posix, > cpp/src/qpid/sys/windows. This has been working well. > The other two places, however, cpp/src/qpid/broker and cpp/src/qpid/client, > don't current have platform-specific subdirectories since to this point, all > the platform differences have successfully been pushed down to > cpp/src/qpid/sys. However, adding a platform quite different from Linux has > forced this issue up a level and we now need to come up with a way to handle > platform differences at the broker and client level. This is arising in 2 > different types of situations: > 1. Areas such as logging classes, where the options and capabilities are not > the same across platforms. For example, syslog doesn't make sense on Windows, > where logging to the event log would. Simply equating the two doesn't work > since there are different related options. Many options are common. Broker > authentication is another area - Windows doesn't provide Cyrus sasl - it uses > other functions. > 2. Situations where the features are the same, but in order to bring in > platform different code at the I/O layer, a source file is copied and edited > slightly to bring in a different lower layer. This is the situation in the > client where the Connector.cpp is copied to WinConnector.cpp to bring in the > Windows asynch I/O code. > Up to now the approach has been this: > - When doing something platform-dependent in cpp/src/qpid/sys, add platform > diffs in cpp/src/qpid/sys/<platform> > - When doing something platform-dependent in cpp/src/qpid/log, add platform > diffs in cpp/src/qpid/log/<platform> > - When doing something platform-dependent in cpp/src/qpid/broker, or > cpp/src/qpid/client, use a file name of the form <platform>File.cpp > Would it be more appropriate to create platform-specific directories under > cpp/src/qpid/broker and .../client? Or stick with the current method? I favor > the new directories, but am open to ideas. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.