(file) Return to handler.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / AceExample / client

File: [Pegasus] / pegasus / src / AceExample / client / Attic / handler.cpp (download)
Revision: 1.2, Wed Apr 11 03:54:02 2001 UTC (23 years, 2 months ago) by mike
Branch: MAIN
CVS Tags: version_1_01, version_0_99_1, version_0_99, version_0_97_3, version_0_97_2, version_0_97_1, version_0_97, version_0_96, version_0_95, version_0_79_4, test, stable_0_95, stable, pep_88, merge_of_dev, mday-merge-start, mday-merge-pegasus/src/Pegasus/Server, mday-merge-pegasus/src/Pegasus/Common, mday-2-0-patches, main, dev_dead, dev, async_dispatcher, VERSION_2_1_RELEASE_HEAD, VERSION_2_1_RELEASE_BRANCH, VERSION_2_1_RELEASE, VERSION_2_1_1_RELEASE, VERSION_2_01_01, VERSION_2_00_RC_4, VERSION_2_00_RC_3, VERSION_2_00_RC_2, VERSION_2_00_RC_1, VERSION_2_00_BRANCH, VERSION_1_10, VERSION_1_09, VERSION_1_08, VERSION_1_07, TEST, STABLE, SNAPSHOT_1_04, RELEASE_2_3_0-msg-freeze, RELEASE_2_2_1-snapshot, RELEASE_2_2_0_0-release, RELEASE_2_2_0-root, RELEASE_2_2_0-branch, RELEASE_2_2-root, PRE_LICENSE_UPDATE_2003, PEGASUS_FC_VERSION_2_2, LOCAL_ASSOCPROV-ROOT, LOCAL_ASSOCPROV-BRANCH
Changes since 1.1: +6 -0 lines
More examples

#include <iostream>
#include "handler.h"

Handler::Handler(ACE_Reactor *reactor)
{
    this->reactor(reactor);
}

Handler::~Handler()
{
    cout << "Handler::~Handler()" << endl;
}

int Handler::open(void* argument)
{
    cout << "Handler::open()" << endl;

    // Enable non-blocking I/O:

    peer().enable(ACE_NONBLOCK);

    // Invoke open() in base class; the object will be registered
    // to receive read events. This could be done here like this:
    //
    //     ACE_Reactor::instance()->register_handler(
    //     this, ACE_Event_Handler::READ_MASK);

    int result = BaseClass::open(argument);

    if (result != 0)
    {
	cerr << "BaseClass::open() failed" << endl;
	return result;
    }

    // Write mesasge:

    const char MESSAGE[] = "Hello World\n";
    peer().send_n(MESSAGE, sizeof(MESSAGE));

    return 0;
}

int Handler::handle_input(ACE_HANDLE)
{
    cout << "Handler::handle_input()" << endl;

    char buffer[1024];
    int n = peer().recv(buffer, sizeof(buffer));

    if (n == 0)
    {
	cout << "Remote side hung up" << endl;
	return -1;
    }
    
    while (n > 0)
    {
	cout << "[" << buffer << "]" << endl;
	n = peer().recv(buffer, sizeof(buffer));
    }

    return 0;
}

int Handler::handle_output(ACE_HANDLE)
{
    cout << "Handler::handle_output()" << endl;
    return 0;
}

int Handler::handle_close(ACE_HANDLE handle, ACE_Reactor_Mask mask)
{
    cout << "Handler::handle_close()" << endl;

    // Invoke handle_close() in base class; this object will be
    // destructed.

    return BaseClass::handle_close(handle, mask);
}

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2