On 30/11/2011 1:21 p.m., Alex Rousskov wrote:
On 11/24/2011 04:04 AM, Amos Jeffries wrote:
Updated patch for review.
+    UnaryCbdataDialer(Handler *aHandler, CbcPointer<Argument1>  aArg) :
The second parameter can probably be adjusted to "const
CbcPointer<Argument1>&" to minimize cbdata-refcounting overheads, but
see below.

Fixed by doing the constructor change below.


+// helper function to simplify Call creation.
s/Call/UnaryCbdataDialer/ or just s/Call/Dialer/

Done.


+cbdataDialer(typename UnaryCbdataDialer<Argument1>::Handler *handler, 
Argument1 *arg1)
I am concerned that cbdataDialer() arg1 type does not match that of
UnaryCbdataDialer constructor. This is atypical for such helper
functions. You may want to change the constructor to use a raw pointer
as well.

Done.


+#if 0
+// dialer to run cbdata object members as Async Calls
+// to ease the transition of these cbdata objects to full Jobs
+template<class T>
+class UnaryCbdataDialer : public CallDialer
Please do not forget to remove during commit.

Oops. Dropped now.


+    int fd; /// FD which the call was about. Set by the async call creator.
Missing "<" after "///".

Done.


+    virtual bool canDial(AsyncCall&call) { return arg1.valid(); }
+    void dial(AsyncCall&call) { handler(arg1.get()); }
I do not think canDial() is virtual. AsyncCallT<Dialer>  knows its dialer
so it does not need canDial() to be virtual to work. There is a TODO to
make canDial() and dial() virtual but it is blocked by
CommCbFunPtrCallT doing things differently.

grep -R "canDial" src/

It is virtual everywhere else except RockIoState. That might be a bug in RockStore.

dial() is the one blocked being a virtual by CommCalls.



I did not find any serious bugs in this patch.



Giving it another run around the block for the dialer constructor change and will commit then if it passes.

Amos

Reply via email to