rath.msnm
Class SwitchboardSession

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--rath.msnm.AbstractProcessor
              |
              +--rath.msnm.SwitchboardSession
All Implemented Interfaces:
Runnable

public class SwitchboardSession
extends AbstractProcessor

친구들과 대화 또는 인스턴트 메시지를 주고 받을때 Channel로 사용되는 Session이다. 이 세션은 사용자의 대화가 끝나면 종료된다.

Version:
$Id: SwitchboardSession.java,v 1.2 2002/03/04 05:30:59 xrath Exp $, since 2001/11/09
Author:
Jang-Ho Hwang, rath@xrath.com

Field Summary
 
Fields inherited from class rath.msnm.AbstractProcessor
callbackMap, in, isLive, msn, out, socket
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
SwitchboardSession(MSNMessenger msn, ServerInfo info, String sessionId)
           
 
Method Summary
 void acceptFileReceive(int cookie, File toReceive)
          상대방으로부터의 파일 수신 요청을 허락한다.
protected  void addMsnFriend(MsnFriend friend)
          특정 사용자를 이 세션에 추가한다.
 void cleanUp()
          스레드가 종료되고 스트림을 닫기 직전에 호출된다.
 void close()
          이 세션을 종료한다.
 String getCookie()
           
 int getFriendCount()
          현재 이 세션에 연결되어있는 친구의 수를 얻어온다.
 MsnFriend getMsnFriend()
          가장 최근에 이 세션에 들어온 친구를 얻어온다.
 Collection getMsnFriends()
           
 String getSessionId()
          현재 세션 id를 문자열 형태로 반환해준다.
 int getTimeout()
          이 Channel에서 얼마간 아무런 메시지도 오가지 않았을 경우 연결을 종료하게 할 수 있는데, 이곳에 적용되는 Timeout으로 millisecond단위로 얻어온다.
 void init()
          서버와의 연결이 맺어진 후 해주어야 할 일이 있다면 이곳에 해주도록 한다.
 boolean isInFriend(String loginName)
          주어진 loginName을 가진 사용자가 이 세션에 물려있는지 아닌지 확인한다.
protected  void makeConnection()
          해당 server와 tcp/ip 연결을 맺고, 입출력 스트림들을 생성한다.
 void processError(Throwable e)
          해당 Processor에서 발생되는 모든 예외는 이곳에서 처리한다.
protected  void processInstantMessage(IncomingMessage msg, MimeMessage mime)
          인스턴트 메시지가 도착하였을때 그 메시지를 처리하는 메소드이다.
protected  void processMimeMessage(IncomingMessage msg)
           
 void processNotifyMessage(IncomingMessage msg)
          Switchboard Server로부터 notify되는 메시지들을 처리한다.
 void processRosterInfo(IncomingMessage msg)
           
protected  void processTypingUser(IncomingMessage msg, MimeMessage mime)
          누군가 자신을 향해 인스턴트 메시지를 날리기 위해 키보드를 다닥다닥 두들기고 있을때 종종 날라오는 메시지이다.
protected  void processWhoJoined(IncomingMessage msg)
           
 void rejectFileReceive(int cookie)
          상대방으로부터의 파일 수신 요청을 거절한다.
protected  MsnFriend removeMsnFriend(String loginName)
          특정 loginName을 가진 사용자를 이 세션에서 제거한다.
 void sendFileRequest(ToSendFile file, FileTransferMessage mime)
          이 세션에 물린 사람에게 파일을 전송하겠다는 메시지를 보낸다.
 void sendInstantMessage(MimeMessage mime)
          인스턴스 메시지를 전송한다.
 void sendMessage(MimeMessage mime)
          이 세션에 있는 모든 사람에게 메시지를 보낸다.
 void sendTypingMessage(MimeMessage mime)
          타이핑 중이라는 메시지를 전송한다.
 void setCookie(String cookie)
           
 void setSessionId(String sessionId)
          현재 세션의 id를 문자열 형태로 설정한다.
 void setTimeout(int timeout)
          이 Channel에서 얼마간 아무런 메시지도 오가지 않았을 경우 연결을 종료하게 할 수 있는데, 이곳에 적용되는 Timeout으로 millisecond단위로 설정한다.
 
Methods inherited from class rath.msnm.AbstractProcessor
getCurrentTransactionId, getServerName, isAutoOutSend, lookupMethod, markTransactionId, processMessage, registerCallback, removeInfiniteTransactionId, run, sendCHLResponse, sendMessage, sendMimeMessage, setAutoOutSend, setServerName
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SwitchboardSession

public SwitchboardSession(MSNMessenger msn,
                          ServerInfo info,
                          String sessionId)
Method Detail

getSessionId

public String getSessionId()
현재 세션 id를 문자열 형태로 반환해준다.


setSessionId

public void setSessionId(String sessionId)
현재 세션의 id를 문자열 형태로 설정한다.


getCookie

public String getCookie()

setCookie

public void setCookie(String cookie)

makeConnection

protected void makeConnection()
                       throws IOException
Description copied from class: AbstractProcessor
해당 server와 tcp/ip 연결을 맺고, 입출력 스트림들을 생성한다. 현재는 UTF-8 인코딩을 기본적으로 하도록 되어있다.

Overrides:
makeConnection in class AbstractProcessor
IOException

setTimeout

public void setTimeout(int timeout)
이 Channel에서 얼마간 아무런 메시지도 오가지 않았을 경우 연결을 종료하게 할 수 있는데, 이곳에 적용되는 Timeout으로 millisecond단위로 설정한다.

Parameters:
timeout - millisecond단위의 SO_TIMEOUT

getTimeout

public int getTimeout()
이 Channel에서 얼마간 아무런 메시지도 오가지 않았을 경우 연결을 종료하게 할 수 있는데, 이곳에 적용되는 Timeout으로 millisecond단위로 얻어온다.

default로 180000(3분)으로 설정되어있다.


init

public void init()
          throws IOException
Description copied from class: AbstractProcessor
서버와의 연결이 맺어진 후 해주어야 할 일이 있다면 이곳에 해주도록 한다.

Specified by:
init in class AbstractProcessor
IOException

addMsnFriend

protected void addMsnFriend(MsnFriend friend)
특정 사용자를 이 세션에 추가한다.


getMsnFriend

public MsnFriend getMsnFriend()
가장 최근에 이 세션에 들어온 친구를 얻어온다.


isInFriend

public boolean isInFriend(String loginName)
주어진 loginName을 가진 사용자가 이 세션에 물려있는지 아닌지 확인한다.


removeMsnFriend

protected MsnFriend removeMsnFriend(String loginName)
특정 loginName을 가진 사용자를 이 세션에서 제거한다.


getMsnFriends

public Collection getMsnFriends()

getFriendCount

public int getFriendCount()
현재 이 세션에 연결되어있는 친구의 수를 얻어온다. 자기 자신은 이 숫자에서 제외된다.


processMimeMessage

protected void processMimeMessage(IncomingMessage msg)
                           throws Exception
Exception

processWhoJoined

protected void processWhoJoined(IncomingMessage msg)
                         throws Exception
Exception

processNotifyMessage

public void processNotifyMessage(IncomingMessage msg)
                          throws Exception
Switchboard Server로부터 notify되는 메시지들을 처리한다.

Overrides:
processNotifyMessage in class AbstractProcessor
Exception

cleanUp

public void cleanUp()
스레드가 종료되고 스트림을 닫기 직전에 호출된다.

Specified by:
cleanUp in class AbstractProcessor

close

public void close()
           throws IOException
이 세션을 종료한다.

IOException

processRosterInfo

public void processRosterInfo(IncomingMessage msg)
                       throws IOException
IOException

processTypingUser

protected void processTypingUser(IncomingMessage msg,
                                 MimeMessage mime)
                          throws IOException
누군가 자신을 향해 인스턴트 메시지를 날리기 위해 키보드를 다닥다닥 두들기고 있을때 종종 날라오는 메시지이다.

IOException

processInstantMessage

protected void processInstantMessage(IncomingMessage msg,
                                     MimeMessage mime)
                              throws IOException
인스턴트 메시지가 도착하였을때 그 메시지를 처리하는 메소드이다.

IOException

sendMessage

public void sendMessage(MimeMessage mime)
                 throws IOException
이 세션에 있는 모든 사람에게 메시지를 보낸다.

IOException

sendFileRequest

public void sendFileRequest(ToSendFile file,
                            FileTransferMessage mime)
                     throws IOException
이 세션에 물린 사람에게 파일을 전송하겠다는 메시지를 보낸다.

IOException

acceptFileReceive

public void acceptFileReceive(int cookie,
                              File toReceive)
                       throws IOException
상대방으로부터의 파일 수신 요청을 허락한다.

Parameters:
cookie - 파일 초청시 받았던 쿠키값.
toReceive - 다운로드할 내용이 저장될 파일.
IOException

rejectFileReceive

public void rejectFileReceive(int cookie)
                       throws IOException
상대방으로부터의 파일 수신 요청을 거절한다.

Parameters:
cookie - 파일 초청시 받았던 쿠키값.
IOException

sendTypingMessage

public void sendTypingMessage(MimeMessage mime)
                       throws IOException
타이핑 중이라는 메시지를 전송한다.

IOException

sendInstantMessage

public void sendInstantMessage(MimeMessage mime)
                        throws IOException
인스턴스 메시지를 전송한다.

IOException

processError

public void processError(Throwable e)
Description copied from class: AbstractProcessor
해당 Processor에서 발생되는 모든 예외는 이곳에서 처리한다. 만약 색다른 처리를 하고 싶다면, overriding하라.

Overrides:
processError in class AbstractProcessor