WvStreams
iwvlistener.h
00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * An interface for "listeners", streams that spawn other streams from
00006  * (presumably) incoming connections.
00007  */ 
00008 #ifndef __IWVLISTENER_H
00009 #define __IWVLISTENER_H
00010 
00011 #include "iwvstream.h"
00012 
00013 typedef wv::function<void(IWvStream*)> IWvListenerCallback;
00014 typedef wv::function<IWvStream*(IWvStream*)> IWvListenerWrapper;
00015 
00016 class IWvListener : public IWvStream
00017 {
00018 public:
00019     static IWvListener *create(WvString moniker, IObject *obj = NULL);
00020     
00025     virtual IWvStream *accept() = 0;
00026     
00032     virtual IWvListenerCallback onaccept(IWvListenerCallback _cb) = 0;
00033     
00041     virtual void addwrap(IWvListenerWrapper _wrapper) = 0;
00042 };
00043 
00044 DEFINE_IID(IWvListener, {0xe7c2433a, 0x6d5c, 0x4345, {0x83,
00045         0xee, 0xc0, 0x0f, 0xa7, 0xe3, 0x08, 0xeb}});
00046 
00047 #endif // __IWVLISTENER_H