Code: Select all
package com.test.lobby;
public interface CULInterface
{
String getDisplayName(int i);
void setDisplayName(int i, String dName);
String getBuddyIgnore(int i);
void setBuddyIgnore(int i, String bi);
int getOnlineStatus(int i);
void setOnlineStatus(int i, int status);
int getActualStatus(int i);
void setActualStatus(int i, int status);
Boolean getAcceptPM(int i);
void setAcceptPM(int i, boolean accept);
Boolean getAcceptBuddy(int i);
void setAcceptBuddy(int i, boolean accept);
Boolean getAcceptChallenge(int i);
void setAcceptChallenge(int i, boolean accept);
String[] getDNameList();
void setDisplayNameList(String[] dName);
String[] getBuddyIgnoreList();
void setBuddyIgnoreList(String[] bi);
int[] getOnlineStatusList();
void setOnlineStatusList(int[] status);
int[] getActualStatusList();
void setActualStatusList(int[] status);
boolean[] getAcceptPMList();
void setAcceptPMList(boolean[] accept);
boolean[] getAcceptBuddyList();
void setAcceptBuddyList(boolean[] accept);
boolean[] getAcceptChallengeList();
void setAcceptChallengListe(boolean[] accept);
}
and the class that implements the interface.
Code: Select all
package com.test.lobby;
import com.smartfoxserver.v2.protocol.serialization.SerializableSFSType;
public class CustomUserList implements CULInterface, SerializableSFSType
{
String[] dNameList;
String[] buddyIgnoreList;
int[] onlineStatusList;
int[] actualStatusList;
boolean[] acceptPMList;
boolean[] acceptBuddyList;
boolean[] acceptChallengeList;
public CustomUserList()
{
}
public CustomUserList(int size)
{
dNameList = new String[size];
buddyIgnoreList = new String[size];
onlineStatusList = new int[size];
actualStatusList = new int[size];
acceptPMList = new boolean[size];
acceptBuddyList = new boolean[size];
acceptChallengeList = new boolean[size];
}
@Override
public String getDisplayName(int i)
{
return dNameList[i];
}
@Override
public void setDisplayName(int i, String dName)
{
dNameList[i] = dName;
}
@Override
public String getBuddyIgnore(int i)
{
return buddyIgnoreList[i];
}
@Override
public void setBuddyIgnore(int i, String bi)
{
buddyIgnoreList[i] = bi;
}
@Override
public int getOnlineStatus(int i)
{
return onlineStatusList[i];
}
@Override
public void setOnlineStatus(int i, int status)
{
onlineStatusList[i] = status;
}
@Override
public int getActualStatus(int i)
{
return actualStatusList[i];
}
@Override
public void setActualStatus(int i, int status)
{
actualStatusList[i] = status;
}
@Override
public Boolean getAcceptPM(int i)
{
return acceptPMList[i];
}
@Override
public void setAcceptPM(int i, boolean accept)
{
acceptPMList[i] = accept;
}
@Override
public Boolean getAcceptBuddy(int i)
{
return acceptBuddyList[i];
}
@Override
public void setAcceptBuddy(int i, boolean accept)
{
acceptBuddyList[i] = accept;
}
@Override
public Boolean getAcceptChallenge(int i)
{
return acceptChallengeList[i];
}
@Override
public void setAcceptChallenge(int i, boolean accept)
{
acceptChallengeList[i] = accept;
}
@Override
public String[] getDNameList()
{
return dNameList;
}
@Override
public void setDisplayNameList(String[] dName)
{
dNameList = dName;
}
@Override
public String[] getBuddyIgnoreList()
{
return buddyIgnoreList;
}
@Override
public void setBuddyIgnoreList(String[] bi)
{
buddyIgnoreList = bi;
}
@Override
public int[] getOnlineStatusList()
{
return onlineStatusList;
}
@Override
public void setOnlineStatusList(int[] status)
{
onlineStatusList = status;
}
@Override
public int[] getActualStatusList()
{
return actualStatusList;
}
@Override
public void setActualStatusList(int[] status)
{
actualStatusList = status;
}
@Override
public boolean[] getAcceptPMList()
{
return acceptPMList;
}
@Override
public void setAcceptPMList(boolean[] accept)
{
acceptPMList = accept;
}
@Override
public boolean[] getAcceptBuddyList()
{
return acceptBuddyList;
}
@Override
public void setAcceptBuddyList(boolean[] accept)
{
acceptBuddyList = accept;
}
@Override
public boolean[] getAcceptChallengeList()
{
return acceptChallengeList;
}
@Override
public void setAcceptChallengListe(boolean[] accept)
{
acceptChallengeList = accept;
}
}
Back in Unity, I have the interface
Code: Select all
using Sfs2X.Protocol.Serialization;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace com.test.lobby
{
public interface CULInterface : SerializableSFSType
{
string getDisplayName(int i);
void setDisplayName(int i, string dName);
string getBuddyIgnore(int i);
void setBuddyIgnore(int i, string bi);
int getOnlineStatus(int i);
void setOnlineStatus(int i, int status);
int getActualStatus(int i);
void setActualStatus(int i, int status);
bool getAcceptPM(int i);
void setAcceptPM(int i, bool accept);
bool getAcceptBuddy(int i);
void setAcceptBuddy(int i, bool accept);
bool getAcceptChallenge(int i);
void setAcceptChallenge(int i, bool accept);
string[] getDNameList();
void setDisplayNameList(string[] dName);
string[] getBuddyIgnoreList();
void setBuddyIgnoreList(string[] bi);
int[] getOnlineStatusList();
void setOnlineStatusList(int[] status);
int[] getActualStatusList();
void setActualStatusList(int[] status);
bool[] getAcceptPMList();
void setAcceptPMList(bool[] accept);
bool[] getAcceptBuddyList();
void setAcceptBuddyList(bool[] accept);
bool[] getAcceptChallengeList();
void setAcceptChallengListe(bool[] accept);
}
}
and the class that implements the interface.
Code: Select all
namespace com.test.lobby
{
public class CustomUserList : MonoBehaviour, SerializableSFSType, CULInterface
{
string[] dNameList;
string[] buddyIgnoreList;
int[] onlineStatusList;
int[] actualStatusList;
bool[] acceptPMList;
bool[] acceptBuddyList;
bool[] acceptChallengeList;
public CustomUserList()
{
}
public CustomUserList(int size)
{
dNameList = new string[size];
buddyIgnoreList = new string[size];
onlineStatusList = new int[size];
actualStatusList = new int[size];
acceptPMList = new bool[size];
acceptBuddyList = new bool[size];
acceptChallengeList = new bool[size];
}
public string getDisplayName(int i)
{
return dNameList[i];
}
public void setDisplayName(int i, string dName)
{
dNameList[i] = dName;
}
public string getBuddyIgnore(int i)
{
return buddyIgnoreList[i];
}
public void setBuddyIgnore(int i, string bi)
{
buddyIgnoreList[i] = bi;
}
public int getOnlineStatus(int i)
{
return onlineStatusList[i];
}
public void setOnlineStatus(int i, int status)
{
onlineStatusList[i] = status;
}
public int getActualStatus(int i)
{
return actualStatusList[i];
}
public void setActualStatus(int i, int status)
{
actualStatusList[i] = status;
}
public bool getAcceptPM(int i)
{
return acceptPMList[i];
}
public void setAcceptPM(int i, bool accept)
{
acceptPMList[i] = accept;
}
public bool getAcceptBuddy(int i)
{
return acceptBuddyList[i];
}
public void setAcceptBuddy(int i, bool accept)
{
acceptBuddyList[i] = accept;
}
public bool getAcceptChallenge(int i)
{
return acceptChallengeList[i];
}
public void setAcceptChallenge(int i, bool accept)
{
acceptChallengeList[i] = accept;
}
public string[] getDNameList()
{
return dNameList;
}
public void setDisplayNameList(string[] dName)
{
dNameList = dName;
}
public string[] getBuddyIgnoreList()
{
return buddyIgnoreList;
}
public void setBuddyIgnoreList(string[] bi)
{
buddyIgnoreList = bi;
}
public int[] getOnlineStatusList()
{
return onlineStatusList;
}
public void setOnlineStatusList(int[] status)
{
onlineStatusList = status;
}
public int[] getActualStatusList()
{
return actualStatusList;
}
public void setActualStatusList(int[] status)
{
actualStatusList = status;
}
public bool[] getAcceptPMList()
{
return acceptPMList;
}
public void setAcceptPMList(bool[] accept)
{
acceptPMList = accept;
}
public bool[] getAcceptBuddyList()
{
return acceptBuddyList;
}
public void setAcceptBuddyList(bool[] accept)
{
acceptBuddyList = accept;
}
public bool[] getAcceptChallengeList()
{
return acceptChallengeList;
}
public void setAcceptChallengListe(bool[] accept)
{
acceptChallengeList = accept;
}
}
}
Once the CustomUserList has been popluated with data, I try to send it back to the Unity client with
Code: Select all
ISFSObject response = new SFSObject();
response.putClass("ul", returnUserList);
send("gu", response, sender);
but I get the following error in the SmartFoxServer console.
Code: Select all
WARN [SFSWorker:Ext:3] protocol.SFSIoHandler - com.smartfoxserver.v2.exceptions.SFSRuntimeException:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Exception: com.smartfoxserver.v2.exceptions.SFSRuntimeException
Message: java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
+--- --- ---+
Stack Trace:
+--- --- ---+
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.pojo2sfs(DefaultSFSDataSerializer.java:1461)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.encodeObject(DefaultSFSDataSerializer.java:852)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.obj2bin(DefaultSFSDataSerializer.java:519)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.object2binary(DefaultSFSDataSerializer.java:502)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.encodeObject(DefaultSFSDataSerializer.java:848)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.obj2bin(DefaultSFSDataSerializer.java:519)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.object2binary(DefaultSFSDataSerializer.java:502)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.encodeObject(DefaultSFSDataSerializer.java:848)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.obj2bin(DefaultSFSDataSerializer.java:519)
com.smartfoxserver.v2.protocol.serialization.DefaultSFSDataSerializer.object2binary(DefaultSFSDataSerializer.java:502)
com.smartfoxserver.v2.entities.data.SFSObject.toBinary(SFSObject.java:234)
com.smartfoxserver.v2.protocol.binary.BinaryIoHandler.handleWrite(BinaryIoHandler.java:84)
com.smartfoxserver.v2.protocol.SFSIoHandler.onDataWrite(SFSIoHandler.java:223)
com.smartfoxserver.v2.protocol.SFSProtocolCodec.onPacketWrite(SFSProtocolCodec.java:165)
com.smartfoxserver.bitswarm.core.BitSwarmEngine.writeToSocket(BitSwarmEngine.java:412)
com.smartfoxserver.bitswarm.core.BitSwarmEngine.write(BitSwarmEngine.java:406)
com.smartfoxserver.bitswarm.io.Response.write(Response.java:71)
com.smartfoxserver.v2.api.response.SFSResponseApi.sendExtResponse(SFSResponseApi.java:91)
com.smartfoxserver.v2.api.SFSApi.sendExtensionResponse(SFSApi.java:1515)
com.smartfoxserver.v2.extensions.BaseSFSExtension.send(BaseSFSExtension.java:487)
com.smartfoxserver.v2.extensions.BaseSFSExtension.send(BaseSFSExtension.java:462)
com.smartfoxserver.v2.extensions.BaseClientRequestHandler.send(BaseClientRequestHandler.java:56)
com.test.lobby.GetUserList.handleClientRequest(GetUserList.java:169)
com.smartfoxserver.v2.extensions.SFSExtension.handleClientRequest(SFSExtension.java:208)
com.smartfoxserver.v2.controllers.v290.ExtensionReqController.processRequest(ExtensionReqController.java:174)
com.smartfoxserver.v2.controllers.v290.ExtensionReqController$1.run(ExtensionReqController.java:68)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::