/* * Chat Core * ICB Protocol Support * * Copyright (c) 2006, 2007 Julio M. Merino Vidal * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * 3. The name of the author may not be used to endorse or promote * products derived from this software without specific prior * written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #import "MVICBChatConnection.h" #import "MVICBChatUser.h" #import "MVChatConnectionPrivate.h" #import "MVChatString.h" @implementation MVICBChatUser #pragma mark Constructors and finalizers - (id) initLocalUserWithConnection:(MVICBChatConnection *) connection { if( ( self = [self initWithNickname:nil andConnection:connection] ) ) { _type = MVChatLocalUserType; _uniqueIdentifier = [[[self nickname] lowercaseString] retain]; _status = MVChatUserAvailableStatus; } return self; } - (id) initWithNickname:(NSString *) nickname andConnection:(MVICBChatConnection *) connection { if( ( self = [super init] ) ) { _connection = connection; _nickname = [nickname retain]; _uniqueIdentifier = [[nickname lowercaseString] retain]; _type = MVChatRemoteUserType; _status = MVChatUserAvailableStatus; [_connection _addKnownUser:self]; } return self; } #pragma mark Message handling - (void) sendMessage:(MVChatString *) message withEncoding:(NSStringEncoding) encoding withAttributes:(NSDictionary *) attributes { #if USE(ATTRIBUTED_CHAT_STRING) NSString *messageString = [message string]; #elif USE(PLAIN_CHAT_STRING) || USE(HTML_CHAT_STRING) NSString *messageString = message; #endif [(MVICBChatConnection *)_connection ctsCommandPersonal:_nickname withMessage:messageString]; } @end