00001 // Copyright 1999-2005 Omni Development, Inc. All rights reserved. 00002 // 00003 // This software may only be used and reproduced according to the 00004 // terms in the file OmniSourceLicense.html, which should be 00005 // distributed with this project and can also be found at 00006 // <http://www.omnigroup.com/developer/sourcecode/sourcelicense/>. 00007 // 00008 // $Header: svn+ssh://source.omnigroup.com/Source/svn/Omni/tags/SourceRelease_2005-11-18/OmniGroup/Frameworks/OmniNetworking/ONTCPDatagramSocket.h 68913 2005-10-03 19:36:19Z kc $ 00009 00010 #import "ONSocket.h" 00011 00012 // This class has the same semantics as ONUDPSocket or ONMulticastSocket, but can use any underlying socket as its transport mechanism. 00013 // For example, you might initialize this with a non-blocking TCP socket and use this as a substitute for an ONMulticastSocket if you want to be able to have the same unreliable non-blocking semantics as a multicast or UDP socket (because you're doing a real-time server) but want a somewhat more reliable underlying transport mechanism (because your network connection is otherwise too lossy). 00014 00015 @class ONSocket; 00016 00017 @interface ONTCPDatagramSocket : ONSocket 00018 { 00019 ONSocket *socket; 00020 void *writeRemainder; 00021 unsigned int writeLength; 00022 unsigned int writePosition; 00023 void *readRemainder; 00024 unsigned int readPacketLength; 00025 unsigned int readLength; 00026 } 00027 00028 - initWithTCPSocket:(ONSocket *)aSocket; 00029 00030 @end 00031 00032 #import "FrameworkDefines.h" 00033 00034 // Exceptions which may be raised by this class 00035 OmniNetworking_EXTERN NSString *ONTCPDatagramSocketPacketTooLargeExceptionName;