// $Revision: 1.4 $ // Copyright (C) 1994-1995 Taligent, Inc. All rights reserved. #ifndef TaligentSamples_ADDITIONDISPATCHER #include "AdditionDispatcher.h" #endif #ifndef Taligent_ASSERTIONS #include #endif //---- TAdditionDispatcher --------------------------------------------------------- TaligentTypeExtensionMacro(TAdditionDispatcher) TAdditionDispatcher::TAdditionDispatcher() : MRemoteDispatcher(), fImplementation(NIL) { } TAdditionDispatcher::TAdditionDispatcher(TAdditionImplementation* adoptedImplementation) : MRemoteDispatcher(), fImplementation(adoptedImplementation) { ::Assertion(adoptedImplementation != NIL, "\nCannot adopt a NIL implementation!\n"); static RequestEntry requests[] = { {kAdd, (RemoteFnPtr)&TAdditionDispatcher::AddStub}, {kAddOne, (RemoteFnPtr)&TAdditionDispatcher::AddOneStub}, // The following constant is very important to include in the request entry. {MRemoteCaller::kUnknownRequest} }; RegisterRequests(TStandardText("TAdditionDispatcher"), kLastRequest, requests); } TAdditionDispatcher::~TAdditionDispatcher() { delete fImplementation; } void TAdditionDispatcher::AddStub(TStream& argStream, TStream& resultStream) { ::Assertion(fImplementation != NIL, "\nNIL implementation!\n"); long num1; long num2; num1 <<= argStream; num2 <<= argStream; long result = fImplementation->Add(num1, num2); ReturnSuccess(resultStream); result >>= resultStream; } void TAdditionDispatcher::AddOneStub(TStream& argStream, TStream& resultStream) { ::Assertion(fImplementation != NIL, "\nNIL implementation!\n"); long num; num <<= argStream; fImplementation->AddOne(num); ReturnSuccess(resultStream); num >>= resultStream; }