public abstract class BaseUser extends BaseObject implements com.nhn.gameanvilcore.topic.TopicHelper, MessageDispatcher.MessageDispatchable, MessageSender, MessageListSender, MessageReplier, MessageListAndMessageReplier
콘텐츠에서 User 를 사용하기위해서는 해당 클래스를 확장해서 사용해야 한다
Constructor and Description |
---|
BaseUser() |
Modifier and Type | Method and Description |
---|---|
void |
addClientTopics(java.util.List<java.lang.String> topics)
클라이언트에 토픽 리스트를 등록 한다
|
Timer |
addTimer(int interval,
java.util.concurrent.TimeUnit timeUnit,
int times,
java.lang.String handlerKey,
TimerHandler handler,
boolean isTickFromRun)
주기적으로 작업을 수행할 타이머를 추가 후 반환 받고 타이머 호출 반복 주기 방식도 설정한다
|
boolean |
addTopic(java.lang.String topic)
토픽을 구독한다
|
boolean |
addTopics(java.util.List<java.lang.String> topics)
여러 개의 토픽을 구독한다
|
Timer |
addUserTimer(int interval,
java.util.concurrent.TimeUnit timeUnit,
int times,
boolean isTickFromRun)
주기적으로 작업을 수행할 타이머를 추가한다
|
abstract boolean |
canLogout()
해당 유저가 로그아웃 가능한지 확인하기 위해 호출 엔진 사용자는 이 콜백에서 현재 게임 유저가 로그아웃을 해도 문제가 없을지 결정할 수 있음
|
abstract boolean |
canTransfer()
유저가 다른 노드로 이동(전송) 가능한 상태인지 확인하기 위해 호출
|
void |
closeConnection(Payload payload)
로그아웃 처리없이 강제 접속 종료 시킨다
클라이언트로 알림을 보내서 onDisconnect() 콜백의 Force 파라미터가 true 로 전달되게 한다
|
void |
closeSession(Payload payload)
로그아웃 처리없이 해당 게임 유저에서 사용하는 세션만 종료시킨다
클라이언트로 알림을 보내서 onDisconnect() 콜백의 Force 파라메터가 true 로 전달되게 한다
|
java.lang.String |
getAccountId()
어카운트 아이디를 반환한다
세션에서 사용하는 아이디
|
BaseGameNode |
getBaseGameNode()
유저가 속한 게임 노드 객체를 반환한다
|
java.lang.String |
getChannelId()
유저가 존재하는 노드의 채널 아이디를 가져온다
|
java.util.Set<java.lang.String> |
getClientTopics()
클라이언트에 등록된 토픽들을 가져온다
|
com.nhn.gameanvilcore.node.game.user.GameUserHelper |
getGameUserHelper()
GameUserHelper 객체를 가져온다
|
java.lang.String |
getMatchingUserCategory()
현재 유저가 룸 매치 메이킹 중이거나 룸 매치 메이킹에 등록된 방에 들어가 있을 경우, 사용한 매칭 유저 카테고리 값을 가져온다
|
java.lang.String |
getRemoteIp()
접속 아이피 주소를 반환한다
|
int |
getRemotePort()
접속 포트를 반환한다
|
int |
getRoomId()
방 아이디를 가져온다
|
int |
getRoomIdBeforeMove()
노드 이동(전송) 전 방 아이디를 가져온다
|
com.nhn.gameanvilcore.id.SessionId |
getSessionId() |
int |
getSubId()
서브 아이디를 반환한다
세션에서 사용하는 아이디
|
Timer |
getTimer(java.lang.String handlerKey)
타이머를 조회한다.
|
java.util.Set<java.lang.String> |
getTopics()
구독중인 토픽 목록을 가져온다
|
int |
getUserId()
유저 아이디를 반환한다
게임노드에서 사용하는 아이디, AccountId:uuid 로 구성되어 있다
|
Timer |
getUserTimer()
유저 타이머를 조회한다.
|
java.lang.String |
getUserType()
유저 타입을 반환한다
|
boolean |
hasTopic(java.lang.String topic)
토픽이 구독 상태인지 확인한다
|
void |
init(com.nhn.gameanvilcore.node.game.user.GameUserHelper gameUserHelper)
사용 전 내부에 필요한 값 설정 및 초기화를 시켜준다
|
boolean |
isDisconnected()
현재 유저의 세션 접속이 끊겼는지를 확인
|
boolean |
isJoinedRoom()
현재 방에 있는지 확인한다
|
boolean |
isJoinGroup()
그룹에 속해 있는지 확인한다
|
void |
kickout()
강제 접속 종료 시킨다
|
void |
kickout(Payload payload)
강제로 로그아웃 시킨다
|
void |
kickoutRoom()
방에서 강제퇴장 시킨다
|
void |
kickoutRoom(Payload payload)
방에서 강제퇴장 시킨다
|
boolean |
matchCancel(java.lang.String matchingGroup,
java.lang.String roomType)
유저 매칭울 취소한다
|
RoomMatchResult |
matchRoom(java.lang.String matchingGroup,
java.lang.String roomType,
BaseRoomMatchForm baseRoomMatchForm)
룸 매칭을 신청한다
|
RoomMatchResult |
matchRoom(java.lang.String matchingGroup,
java.lang.String roomType,
BaseRoomMatchForm baseRoomMatchForm,
java.lang.Object... args)
룸 매칭을 신청한다
|
boolean |
matchUser(java.lang.String matchingGroup,
java.lang.String roomType,
BaseUserMatchInfo terms)
유저 매칭을 신청한다
|
void |
moveChannel(java.lang.String channelId)
채널을 이동한다
|
void |
moveChannel(java.lang.String channelId,
Payload payload)
채널을 이동한다
|
boolean |
onCheckMoveOutChannel(java.lang.String destinationChannelId,
Payload payload,
Payload errorPayload)
클라이언트에서 다른 채널로 이동 요청을 할 때, 현재 유저가 채널 이동이 가능한 상태인지 확인하기 위해 호출
주의!
|
abstract void |
onDisconnect()
클라이언트와의 연결이 끊어졌을때 호출되는 콜백
|
void |
onDispatch(Packet packet)
유저에 처리할 패킷이 있을 때 호출
|
abstract boolean |
onLogin(Payload payload,
Payload sessionPayload,
Payload outPayload)
로그인할 때 호출
|
void |
onLoginByOtherConnection(Payload outPayload)
이미 로그인 된 상태에서 (재접속 등의 이유로) 다른 커넥션을 통해 로그인을 시도할 경우 호출
|
boolean |
onLoginByOtherDevice(java.lang.String newDeviceId,
Payload outPayloadForKickUser)
이미 로그인된 상황에서 다른 디바이스로 같은 유저가 로그인할 때 호출
|
boolean |
onLoginByOtherUserType(java.lang.String userType,
Payload outPayload)
임의의 유저 타입으로 이미 로그인 한 상태에서 다른 유저 타입으로 로그인을 시도할 때 호출
|
abstract void |
onLogout(Payload payload,
Payload outPayload)
유저가 로그아웃할 때 호출
|
RoomMatchResult |
onMatchRoom(java.lang.String roomType,
java.lang.String matchingGroup,
java.lang.String matchingUserCategory,
Payload payload)
룸 매치메이킹 요청을 받으면 호출
|
void |
onMatchRoomFail(MatchRoomFailCode matchRoomFailCode)
client 의 roomMatch 요청을 처리할 때 실패하는 경우 호출되는 callback.
|
boolean |
onMatchUser(java.lang.String roomType,
java.lang.String matchingGroup,
Payload payload,
Payload outPayload)
클라이언트에서 유저 매칭을 요청했을 경우 호출되는 콜백
|
void |
onMatchUserCancel(MatchCancelReason reason)
유저 매칭이 취소될 때 호출
|
void |
onMatchUserFail(MatchUserFailCode matchUserFailCode)
client 의 userMatch 요청을 처리할 때 실패하는 경우 호출되는 callback.
|
void |
onMoveInChannel(java.lang.String sourceChannelId,
Payload payload,
Payload outPayload)
다른 노드로 채널 이동을 할 때, 대상 노드로 진입하면서 호출
|
void |
onMoveOutChannel(java.lang.String destinationChannelId,
Payload outPayload)
다른 노드로 채널 이동을 할 때, 출발 노드에서 호출
|
abstract void |
onPause()
유저가 속한 노드가 Pause 될 때, 해당 유저도 Pause 되면서 호출
|
abstract void |
onPostLeaveRoom()
Room의 onLeavingRoom 실행되고 Room에서 User가 완전히 나간 후 호출되는 callback.
|
abstract void |
onPostLogin()
로그인 성공 이후에 필요한 후처리를 위해 호출 (즉, onLogin 혹은 onReLoin이 성공한 후 호출)
|
void |
onPostMoveInChannel()
다른 노드로 채널 이동이 완료된 후 대상 노드에서 호출
|
void |
onPostMoveOutChannel()
다른 노드로 채널 이동이 완료된 후 출발 노드에서 호출
|
void |
onPostTransferIn()
노드 간 유저 이동(전송)이 완료된 후 호출
|
abstract boolean |
onReLogin(Payload payload,
Payload sessionPayload,
Payload outPayload)
이미 로그인 된 상태에서, 다시 로그인을 시도할 때 호출 (로그인 된 상태에서는 사용자의 게임유저 객체가 게임노드에 여전히 유효한 상태로 남아있음)
|
abstract void |
onResume()
유저가 속한 노드가 Resume 될 때, 해당 유저도 Resume 되면서 호출
|
void |
onSnapshot(Payload payload,
Payload outPayload)
클라이언트에서 스냅샷 요청시 호출
주로 접속이 끊어 지고 서버 상태가 변할 확률이 있을 경우 호출해서 클라이언트와 서버 상태정보를 동기화 하는데 사용된다
|
void |
onTransferIn(TransferPack transferPack)
유저가 다른 노드로 이동(전송)할 때, 출발 노드에서 전달할 데이터를 꾸리기 위해서 호출
|
void |
onTransferInTimerHandler(TimerHandlerTransferPack timerHandlerTransferPack)
처리할 타이머 핸들러를 등록하기 위한 콜백
TimerHandlerTransferPack을 통해서 user에 등록되어 있던 timerHandlerKey 목록을 확인한다.
|
void |
onTransferOut(TransferPack transferPack)
유저가 다른 노드로 이동(전송)할 때, 출발 노드에서 전달할 데이터를 꾸리기 위해서 호출
|
void |
postJob(com.nhn.gameanvilcore.node.PostHandler handler,
java.lang.Object arg)
현재 진행되는 흐름 종료 후 다음번에 호출될 PostHandler를 지정한다
|
void |
removeAllTimer()
등록된 모든 타이머를 삭제한다
|
void |
removeClientTopics(java.util.List<java.lang.String> topics)
클라이언트에 등록된 토픽 리스트를 제거 한다
|
void |
removeTimer(Timer timerObject)
주기적으로 작업을 수행하는 타이머를 제거한다
|
void |
removeTopic(java.lang.String topic)
Publish 메시지를 수신하는 노드 토픽을 삭제한다
|
void |
removeTopics(java.util.List<java.lang.String> topics)
여러 개의 토픽을 구독 취소한다
|
void |
reply(java.util.Collection<Packet> packetList,
Packet replyPacket)
게임 노드로 전송한 Request에 대한 응답 메시지들을 모아서 한번에 응답 한다
|
void |
reply(Packet packet)
클라이언트가 전송한 Request에 대해 응답 한다
|
<ProtoBuffer extends com.google.protobuf.GeneratedMessageV3> |
requestToSession(com.google.protobuf.GeneratedMessageV3 message)
원하는 세션으로 패킷을 전송 후 응답을 응답을 대기한다
|
Packet |
requestToSession(Packet packet)
원하는 세션으로 패킷을 전송 후 응답을 응답을 대기한다
|
void |
send(java.util.Collection<Packet> packetList)
유저에게 다수의 패킷을 모아서 한번에 전송한다
|
void |
send(Packet packet)
단일 유저(클라이언트)에게 패킷을 전송합니다.
|
void |
setBaseGameNode(BaseGameNode baseGameNode)
유저가 속한 게임 노드 객체를 설정한다
|
<T extends BaseChannelUserInfo> |
updateChannelUserInfo(T channelUserInfo)
채널 유저 정보를 갱신한다
|
findAllUserLocsOfAccount, findOnlineUsers, findUserLoc, findUserLoc, findUsersLoc, getAllChannelList, getFirstNodeId, getFirstNodeId, getIntercom, getNodeId, getReadyAllGameNode, getReadyAllGameNode, getReadyAllSupportNode, getServiceId, getServiceName, init, publishToClient, publishToClient, publishToNode, publishToNode, publishToNodeWithChannelId, publishToNodeWithChannelId, publishToNodeWithHostId, publishToNodeWithHostId, publishToNodeWithNodeId, publishToNodeWithNodeId, publishToNodeWithServiceId, publishToNodeWithServiceId, publishToNodeWithServiceName, publishToNodeWithServiceName, publishToRoom, publishToRoom, publishToRoomWithChannelId, publishToRoomWithChannelId, publishToRoomWithHostId, publishToRoomWithHostId, publishToRoomWithNodeId, publishToRoomWithNodeId, publishToRoomWithServiceId, publishToRoomWithServiceId, publishToRoomWithServiceName, publishToRoomWithServiceName, publishToSpot, publishToSpot, publishToSpotWithHostId, publishToSpotWithHostId, publishToSpotWithNodeId, publishToSpotWithNodeId, publishToSpotWithServiceId, publishToSpotWithServiceId, publishToSpotWithServiceName, publishToSpotWithServiceName, publishToUser, publishToUser, publishToUserWithChannelId, publishToUserWithChannelId, publishToUserWithHostId, publishToUserWithHostId, publishToUserWithNodeId, publishToUserWithNodeId, publishToUserWithServiceId, publishToUserWithServiceId, publishToUserWithServiceName, publishToUserWithServiceName, requestAllChannelCountInfo, requestAllChannelInfo, requestAllGameNodeIds, requestAllUserIds, requestChannelCountInfo, requestChannelInfo, requestGameNodeId, requestOnlineCheck, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllGameNode, requestToAllManagementNode, requestToAllManagementNode, requestToAllSession, requestToAllSession, requestToAllSupportNode, requestToAllSupportNode, requestToAllSupportNode, requestToAllSupportNode, requestToFirstNode, requestToFirstNode, requestToFirstNode, requestToFirstNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGameNode, requestToGatewayNode, requestToGatewayNode, requestToManagementNode, requestToManagementNode, requestToNode, requestToNode, requestToNodes, requestToNodes, requestToNodes, requestToRoom, requestToRoom, requestToRoom, requestToRoom, requestToSession, requestToSession, requestToSpot, requestToSpot, requestToSpot, requestToSpot, requestToSupportNode, requestToSupportNode, requestToSupportNode, requestToSupportNode, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUser, requestToUserInNode, requestToUserInNode, sendToClient, sendToClient, sendToClient, sendToClient, sendToClient, sendToClient, sendToClient, sendToClient, sendToFirstNode, sendToFirstNode, sendToFirstNode, sendToFirstNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToGameNode, sendToManagementNode, sendToManagementNode, sendToNode, sendToNode, sendToRoom, sendToRoom, sendToRoom, sendToRoom, sendToSession, sendToSession, sendToSpot, sendToSpot, sendToSpot, sendToSpot, sendToSupportNode, sendToSupportNode, sendToSupportNode, sendToSupportNode, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUser, sendToUserInNode, sendToUserInNode, sendToUsers, sendToUsers, sendToUsers, sendToUsers
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getMessageDispatcher, onAfterDispatch, tryDispatch
send, send
sendMessageBuilders, sendMessages
reply, reply
reply
public com.nhn.gameanvilcore.node.game.user.GameUserHelper getGameUserHelper()
GameUserHelper
객체 반환public void setBaseGameNode(BaseGameNode baseGameNode)
baseGameNode
- 유저가 속한 게임 노드 객체인 BaseGameNode
public BaseGameNode getBaseGameNode()
BaseGameNode
반환public void init(com.nhn.gameanvilcore.node.game.user.GameUserHelper gameUserHelper)
gameUserHelper
- 사용할 GameUserHelper
public java.lang.String getRemoteIp()
public int getRemotePort()
public int getUserId()
게임노드에서 사용하는 아이디, AccountId:uuid 로 구성되어 있다
public com.nhn.gameanvilcore.id.SessionId getSessionId()
public java.lang.String getAccountId()
세션에서 사용하는 아이디
public int getSubId()
세션에서 사용하는 아이디
public final java.lang.String getUserType()
public boolean isJoinGroup()
public Packet requestToSession(Packet packet) throws co.paralleluniverse.fibers.SuspendExecution, java.util.concurrent.TimeoutException, GameAnvilException
packet
- 전송할 패킷co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic <ProtoBuffer extends com.google.protobuf.GeneratedMessageV3> ProtoBuffer requestToSession(com.google.protobuf.GeneratedMessageV3 message) throws co.paralleluniverse.fibers.SuspendExecution, java.util.concurrent.TimeoutException, GameAnvilException
message
- 전송할 메세지co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic RoomMatchResult matchRoom(java.lang.String matchingGroup, java.lang.String roomType, BaseRoomMatchForm baseRoomMatchForm) throws co.paralleluniverse.fibers.SuspendExecution, NodeNotFoundException, java.util.concurrent.TimeoutException, GameAnvilException
matchingGroup
- 매칭 그룹 정보 (ex-채널 아이디)roomType
- 매칭 시 사용하는 방 타입baseRoomMatchForm
- 룸 매칭 신청 정보가 세팅된 BaseRoomMatchForm
RoomMatchResult
타입으로 룸 매칭 결과 반환co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic RoomMatchResult matchRoom(java.lang.String matchingGroup, java.lang.String roomType, BaseRoomMatchForm baseRoomMatchForm, java.lang.Object... args) throws co.paralleluniverse.fibers.SuspendExecution, NodeNotFoundException, java.util.concurrent.TimeoutException, GameAnvilException
matchingGroup
- 매칭 그룹 정보 (ex-채널 아이디)roomType
- 매칭시 사용하는 방 타입baseRoomMatchForm
- 룸 매칭 신청 정보가 세팅된 BaseRoomMatchForm
args
- 매칭에서 사용하는 추가 정보. RoomMatchMaker.match 에서 사용RoomMatchResult
타입으로 룸 매칭 결과 반환co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic boolean matchUser(java.lang.String matchingGroup, java.lang.String roomType, BaseUserMatchInfo terms) throws co.paralleluniverse.fibers.SuspendExecution, java.util.concurrent.TimeoutException, NodeNotFoundException, GameAnvilException
matchingGroup
- 매칭 그룹 정보 (ex-채널 아이디)roomType
- 매칭시 사용하는 방 타입terms
- 매칭을 신청하는 유저 매칭 정보co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic boolean matchCancel(java.lang.String matchingGroup, java.lang.String roomType) throws co.paralleluniverse.fibers.SuspendExecution, java.util.concurrent.TimeoutException, NodeNotFoundException
matchingGroup
- 매칭 그룹 정보 (ex-채널 아이디)roomType
- 매칭시 사용하는 방 타입co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생public Timer getTimer(java.lang.String handlerKey)
handlerKey
- 핸들러키Timer
타입으로 등록된 타이머 반환public Timer addTimer(int interval, java.util.concurrent.TimeUnit timeUnit, int times, java.lang.String handlerKey, TimerHandler handler, boolean isTickFromRun)
interval
- 지연 간격timeUnit
- 시간 단위인 TimeUnit
times
- 반복 횟수(0 == 무한반복)handler
- 등록할 TimerHandler
isTickFromRun
- false 이면 타이머는 가장 최근의 구동 시점 기준으로 인터벌 후에 구동된다. true 이면 타이머는 등록 시점 기준으로 인터벌 주기로 반복된다.Timer
타입으로 등록된 타이머 반환public Timer addUserTimer(int interval, java.util.concurrent.TimeUnit timeUnit, int times, boolean isTickFromRun)
interval
- 지연 간격timeUnit
- 시간 단위인 TimeUnit
times
- 반복 횟수(0 == 무한반복)isTickFromRun
- false 이면 타이머는 가장 최근의 구동 시점 기준으로 인터벌 후에 구동된다. true 이면 타이머는 등록 시점 기준으로 인터벌 주기로 반복된다Timer
타입으로 등록된 타이머 반환public void removeTimer(Timer timerObject)
timerObject
- 제거할 타이머 객체public void removeAllTimer()
public void send(Packet packet)
send
in interface MessageSender
packet
- 전송할 Packet
public void send(java.util.Collection<Packet> packetList)
send
in interface MessageListSender
packetList
- 유저에게 보낼 Packet
목록public void reply(Packet packet)
reply
in interface MessageReplier
packet
- 응답할 Packet
public void reply(java.util.Collection<Packet> packetList, Packet replyPacket)
reply
in interface MessageListAndMessageReplier
packetList
- 응답 패킷에 같이 실어 보낼 패킷 목록replyPacket
- 메시지를 요청한 대상에게 보낼 응답 Packet
public void kickoutRoom() throws co.paralleluniverse.fibers.SuspendExecution, GameAnvilException
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void kickoutRoom(Payload payload) throws co.paralleluniverse.fibers.SuspendExecution, GameAnvilException
payload
- 강제 퇴장 추가 정보인 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void kickout() throws co.paralleluniverse.fibers.SuspendExecution, GameAnvilException
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void kickout(Payload payload) throws co.paralleluniverse.fibers.SuspendExecution, GameAnvilException
payload
- 로그아웃 추가 정보인 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void closeConnection(Payload payload) throws co.paralleluniverse.fibers.SuspendExecution
클라이언트로 알림을 보내서 onDisconnect() 콜백의 Force 파라미터가 true 로 전달되게 한다
payload
- 강제 접속 종료 추가 정보인 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void closeSession(Payload payload) throws co.paralleluniverse.fibers.SuspendExecution
클라이언트로 알림을 보내서 onDisconnect() 콜백의 Force 파라메터가 true 로 전달되게 한다
payload
- 세션 종료 추가 정보인 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public java.lang.String getChannelId()
public void moveChannel(java.lang.String channelId) throws co.paralleluniverse.fibers.SuspendExecution, NodeNotFoundException, java.util.concurrent.TimeoutException, GameAnvilException
channelId
- 이동할 채널 아이디co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void moveChannel(java.lang.String channelId, Payload payload) throws co.paralleluniverse.fibers.SuspendExecution, NodeNotFoundException, java.util.concurrent.TimeoutException, GameAnvilException
channelId
- 이동할 채널 아이디payload
- 채널 이동 후 사용될 추가 정보인 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미NodeNotFoundException
- 해당 노드가 존재하지 않을 때 발생java.util.concurrent.TimeoutException
- 해당 메서드 호출 후 실패 시 지정한 시간이 지나면 타임아웃 발생GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic int getRoomId()
public int getRoomIdBeforeMove()
public boolean isJoinedRoom()
public void postJob(com.nhn.gameanvilcore.node.PostHandler handler, java.lang.Object arg) throws co.paralleluniverse.fibers.SuspendExecution
handler
- 호출될 핸들러인 PostHandler
arg
- 핸들러에 전달된 파라미터인 Object
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public final <T extends BaseChannelUserInfo> void updateChannelUserInfo(T channelUserInfo) throws co.paralleluniverse.fibers.SuspendExecution
T
- 갱신할 채널 유저 정보 타입channelUserInfo
- 갱신할 채널 유저 정보 전달co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void addClientTopics(java.util.List<java.lang.String> topics)
topics
- 등록할 토픽 리스트public void removeClientTopics(java.util.List<java.lang.String> topics)
topics
- 제거할 토픽 리스트public java.util.Set<java.lang.String> getClientTopics()
public boolean hasTopic(java.lang.String topic)
hasTopic
in interface com.nhn.gameanvilcore.topic.TopicHelper
topic
- 확인할 토픽public java.util.Set<java.lang.String> getTopics()
getTopics
in interface com.nhn.gameanvilcore.topic.TopicHelper
public boolean addTopic(java.lang.String topic)
addTopic
in interface com.nhn.gameanvilcore.topic.TopicHelper
topic
- 구독할 토픽public boolean addTopics(java.util.List<java.lang.String> topics)
addTopics
in interface com.nhn.gameanvilcore.topic.TopicHelper
topics
- 구독할 토픽 목록public void removeTopic(java.lang.String topic)
removeTopic
in interface com.nhn.gameanvilcore.topic.TopicHelper
topic
- 구독 취소할 토픽public void removeTopics(java.util.List<java.lang.String> topics)
removeTopics
in interface com.nhn.gameanvilcore.topic.TopicHelper
topics
- 구독 취소할 토픽 목록public abstract boolean onLogin(Payload payload, Payload sessionPayload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
public abstract void onPostLogin() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public boolean onLoginByOtherDevice(java.lang.String newDeviceId, Payload outPayloadForKickUser) throws co.paralleluniverse.fibers.SuspendExecution
newDeviceId
- 새로 접속한 유저의 디바이스 아이디 값outPayloadForKickUser
- 클라이언트로 전달할 Payload
. kickOut 혹은 LoginRes 정보 포함co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public boolean onLoginByOtherUserType(java.lang.String userType, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
userType
- 새로 로그인을 시도하는 유저의 타입outPayload
- 클라이언트로 전달할 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onLoginByOtherConnection(Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
outPayload
- 클라이언트로 전달할 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract boolean onReLogin(Payload payload, Payload sessionPayload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
public abstract void onDisconnect() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public final void onDispatch(Packet packet) throws co.paralleluniverse.fibers.SuspendExecution
packet
- 처리할 Packet
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract void onPause() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract void onResume() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract void onLogout(Payload payload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
public abstract boolean canLogout() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract void onPostLeaveRoom() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버가 suspend 될 수 있다.public RoomMatchResult onMatchRoom(java.lang.String roomType, java.lang.String matchingGroup, java.lang.String matchingUserCategory, Payload payload) throws co.paralleluniverse.fibers.SuspendExecution
roomType
- 클라이언트와 서버 사이에 사전 정의한 방 종류를 구분하는 임의의 값matchingGroup
- 매칭되는 룸 매칭 그룹 전달matchingUserCategory
- 매칭되는 룸 매칭 유저 카테고리 전달payload
- 클라이언트로부터 전달받은 Payload
RoomMatchResult
타입으로 매칭된 방의 정보 반환. null 을 반환 할 경우 클라이언트 요청 옵션에 따라서 새로운 방이 생성되거나 요청 실패 처리co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onMatchRoomFail(MatchRoomFailCode matchRoomFailCode) throws co.paralleluniverse.fibers.SuspendExecution
matchRoomFailCode
- 매칭이 실패한 이유co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버가 suspend 될 수 있다.public void onMatchUserFail(MatchUserFailCode matchUserFailCode) throws co.paralleluniverse.fibers.SuspendExecution
matchUserFailCode
- 매칭이 실패한 이유co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버가 suspend 될 수 있다.public boolean onMatchUser(java.lang.String roomType, java.lang.String matchingGroup, Payload payload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
public void onMatchUserCancel(MatchCancelReason reason) throws co.paralleluniverse.fibers.SuspendExecution
reason
- 취소된 이유. 일반적으로 타임아웃(TIMEOUT) 이거나 사용자의 요청에 의한 취소(CANCEL) 중 한 가지co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onTransferOut(TransferPack transferPack) throws co.paralleluniverse.fibers.SuspendExecution
transferPack
- 다른 노드로 가지고 갈 데이터를 저장하기 위한 꾸러미co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onTransferIn(TransferPack transferPack) throws co.paralleluniverse.fibers.SuspendExecution
transferPack
- 다른 노드로 가지고 갈 데이터를 저장하기 위한 꾸러미co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onTransferInTimerHandler(TimerHandlerTransferPack timerHandlerTransferPack) throws co.paralleluniverse.fibers.SuspendExecution
TimerHandlerTransferPack을 통해서 user에 등록되어 있던 timerHandlerKey 목록을 확인한다. TimerHandlerTransferPack의 reRegister()를 활용해서 사용할 timerHandler를 다시 등록한다.
timerHandlerTransferPack
- co.paralleluniverse.fibers.SuspendExecution
public void onPostTransferIn() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onSnapshot(Payload payload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
주로 접속이 끊어 지고 서버 상태가 변할 확률이 있을 경우 호출해서 클라이언트와 서버 상태정보를 동기화 하는데 사용된다
public boolean isDisconnected()
public boolean onCheckMoveOutChannel(java.lang.String destinationChannelId, Payload payload, Payload errorPayload) throws co.paralleluniverse.fibers.SuspendExecution
주의! 만일, 사용자가 명시적으로 moveChannel() API를 호출하여 채널을 이동할 경우에는 onCheckMoveOutChannel()가 호출되지 않는다. 오직 엔진에 의해 암묵적인 채널 이동이 발생할 때 호출된다
public void onMoveOutChannel(java.lang.String destinationChannelId, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution
destinationChannelId
- 이동 대상 채널의 아이디outPayload
- 이동할 채널에 전달할 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onPostMoveOutChannel() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public void onMoveInChannel(java.lang.String sourceChannelId, Payload payload, Payload outPayload) throws co.paralleluniverse.fibers.SuspendExecution, GameAnvilException
sourceChannelId
- 이동하기 전의 채널 아이디payload
- 클라이언트로부터 전달받은 Payload
outPayload
- 클라이언트로 전달할 Payload
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미GameAnvilException
- IOException, ExecutionException, InterruptedException 발생시 GameAnvilException 으로 묶어서 throwpublic void onPostMoveInChannel() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public abstract boolean canTransfer() throws co.paralleluniverse.fibers.SuspendExecution
co.paralleluniverse.fibers.SuspendExecution
- 이 메서드는 파이버를 Suspend 할 수 있음을 의미public java.lang.String getMatchingUserCategory()