[
https://issues.apache.org/jira/browse/QPID-1377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Huston reopened QPID-1377:
--------------------------------
Ok, Ted. Apologies.
Please try adding
#include "qpid/sys/DispatchHandle.h"
to qpid/sys/ssl/Ssllo.h - meanwhile, I'll try to see why my build didn't get
that error.
> C++ Refactor asynch level to enable easier Windows porting
> ----------------------------------------------------------
>
> Key: QPID-1377
> URL: https://issues.apache.org/jira/browse/QPID-1377
> Project: Qpid
> Issue Type: Improvement
> Components: C++ Broker, C++ Client
> Reporter: Steve Huston
> Assignee: Steve Huston
> Fix For: M4
>
> Attachments: aio.diff
>
>
> This issue is in preparation for the rest of the Windows porting. It's by
> itself because it deals with refactoring/splitting some of the existing
> qpid/sys modules to better prepare for adding the Windows code. Most of these
> ideas have been reviewed a few times by Andrew Stitcher in the past, though
> some of the AsynchIO splitting is new (I'll explain why below).
> Here's the high level overview:
> - Poller::Direction names IN and OUT change to INPUT and OUTPUT to avoid
> clashing with Windows-defined macros. Yucky, but that's life.
> - DispatcHandle - split out of Dispatcher.h, .cpp to new files
> DispatchHandle.h, .cpp - makes it easier to reuse Dispatcher for Windows;
> DispatchHandle is not needed.
> - qpid::sys::AsynchIO turns into a pure virtual interface class; platforms
> derive from it and whatever else they need to implement correctly for the
> platform. This is for two reasons:
> 1. The previous approach discussed was to basically redefine/implement
> AsynchIO as needed in Windows, then for every place where AsynchIO is used,
> clone the file and edit to use Windows. This was working ok, but recently a
> number of changes were made to the cloned-and-copied sources and it became
> clear that the copy-and-edit approach was going to cause me way too many
> headaches to deal with over time.
> 2. Uses of AsynchIO are in client and broker code where there are dynamic
> allocations, but AsynchIO implementation, as well as its deletions, are in
> common. As these are split into actual DLLs, having allocations and deletions
> in different DLLs will cause heap problems on Windows. So, since common does
> the deletes based on usage and outstanding operations, the allocations are
> now there in common as well. This is via a new qpid::sys::AsynchIO::create()
> static method. Each platform implements AsynchIO::create() as it needs; in
> particular, it allocates a platform-specific class derived from
> qpid::sys::AsynchIO which neatly hides all the platform messiness behind a
> virtual interface.
> There's also some initial Windows code in the patch - you can ignore things
> in qpid/sys/windows unless you're really interested in the platform code -
> it's not related to the Linux code.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.