00001 /************************************************************************** 00002 Copyright (c) 2000-2001, Tony Garnock-Jones 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions are 00007 met: 00008 00009 * Redistributions of source code must retain the above copyright 00010 notice, this list of conditions and the following disclaimer. 00011 00012 * Redistributions in binary form must reproduce the above 00013 copyright notice, this list of conditions and the following 00014 disclaimer in the documentation and/or other materials provided 00015 with the distribution. 00016 00017 * Neither the names of the copyright holders nor the names of this 00018 software's contributors may be used to endorse or promote 00019 products derived from this software without specific prior 00020 written permission. 00021 00022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00025 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 00026 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00027 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00028 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00029 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00030 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00031 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00032 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 **************************************************************************/ 00034 00035 #include <stdlib.h> 00036 #include <stdio.h> 00037 #include <string.h> 00038 #include <assert.h> 00039 #include <errno.h> 00040 00041 #include <mps/mps.h> 00042 #include <mps/transport_fastmsg.h> 00043 00044 #include <fastmsg/Root.h> 00045 00046 #include "FastmsgLink.h" 00047 #include "FastmsgMessage.h" 00048 00049 FastmsgLink::FastmsgLink(string const &serverName, MPS::Address const &a) 00050 : MPS::Connection(a), 00051 me(Mailbox::create()), 00052 other(Mailbox::attach(serverName.c_str())), 00053 corrId(FastmsgRoot::getCorrId()) 00054 { 00055 } 00056 00057 MPS::OutputStream *FastmsgLink::getOutputStream() { 00058 return new FastmsgOutputStream(me, 00059 other, 00060 corrId); 00061 } 00062 00063 MPS::InputStream *FastmsgLink::getInputStream() { 00064 return new FastmsgInputStream(me->receive()); 00065 } 00066 00067 void FastmsgLink::releaseOutputStream(MPS::OutputStream *stream) { 00068 delete (FastmsgOutputStream *) stream; 00069 } 00070 00071 void FastmsgLink::releaseInputStream(MPS::InputStream *stream) { 00072 delete (FastmsgInputStream *) stream; 00073 }