public class Tinode
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
Tinode.EventListener
Callback interface called by Connection when it receives events from the websocket.
|
static interface |
Tinode.MimeTypeResolver
Interface for converting mime type string to Jackson's JavaType.
|
static interface |
Tinode.TopicFilter<T extends Topic>
Interface to be implemented by those clients which want to fetch topics
using
getFilteredTopics(co.tinode.tinodesdk.Tinode.TopicFilter) |
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CHANNEL_NEW |
static java.lang.String |
MAX_FILE_UPLOAD_SIZE |
static java.lang.String |
MAX_MESSAGE_SIZE |
static java.lang.String |
MAX_SUBSCRIBER_COUNT |
static java.lang.String |
MAX_TAG_COUNT |
static java.lang.String |
MAX_TAG_LENGTH |
static java.lang.String |
MIN_TAG_LENGTH |
protected static java.lang.String |
NOTE_KP |
protected static java.lang.String |
NOTE_READ |
protected static java.lang.String |
NOTE_RECV |
static java.lang.String |
NULL_VALUE |
protected static java.text.SimpleDateFormat |
sDateFormat |
protected static com.fasterxml.jackson.databind.type.TypeFactory |
sTypeFactory |
static java.lang.String |
TOPIC_CHN_PREFIX |
static java.lang.String |
TOPIC_FND |
static java.lang.String |
TOPIC_GRP_PREFIX |
static java.lang.String |
TOPIC_ME |
static java.lang.String |
TOPIC_NEW |
static java.lang.String |
TOPIC_SYS |
static java.lang.String |
TOPIC_USR_PREFIX |
static java.lang.String |
USER_NEW |
| Constructor and Description |
|---|
Tinode(java.lang.String appname,
java.lang.String apikey)
Initialize Tinode package
|
Tinode(java.lang.String appname,
java.lang.String apikey,
Storage store,
Tinode.EventListener listener)
Initialize Tinode package
|
Tinode(java.lang.String appname,
java.lang.String apikey,
Tinode.EventListener listener)
Initialize Tinode package
|
| Modifier and Type | Method and Description |
|---|---|
protected <Pu,Pr> PromisedReply<ServerMessage> |
account(java.lang.String uid,
java.lang.String scheme,
java.lang.String secret,
boolean loginNow,
java.lang.String[] tags,
MetaSetDesc<Pu,Pr> desc,
Credential[] cred)
Create new account.
|
void |
addListener(Tinode.EventListener listener)
Add listener which will receive event notifications.
|
PromisedReply<ServerMessage> |
connect(@Nullable java.lang.String hostName,
boolean tls,
boolean background)
Open a websocket connection to the server, process handshake exchange then optionally login.
|
protected PromisedReply<ServerMessage> |
connect(@NotNull java.net.URI serverURI,
boolean background)
Open a websocket connection to the server, process handshake exchange then optionally login.
|
<Pu,Pr> PromisedReply<ServerMessage> |
createAccountBasic(java.lang.String uname,
java.lang.String password,
boolean login,
java.lang.String[] tags,
MetaSetDesc<Pu,Pr> desc,
Credential[] cred)
Create account using a single basic authentication scheme.
|
PromisedReply<ServerMessage> |
delCredential(Credential cred)
Low-level request to delete a credential.
|
PromisedReply<ServerMessage> |
delCurrentUser(boolean hard)
Request to delete account of the current user.
|
PromisedReply<ServerMessage> |
delMessage(java.lang.String topicName,
int seqId,
boolean hard)
Low-level request to delete one message from a topic.
|
PromisedReply<ServerMessage> |
delMessage(java.lang.String topicName,
int fromId,
int toId,
boolean hard)
Low-level request to delete all messages from the topic with ids in the given range.
|
PromisedReply<ServerMessage> |
delMessage(java.lang.String topicName,
MsgRange[] ranges,
boolean hard)
Low-level request to delete messages from a topic.
|
PromisedReply<ServerMessage> |
delSubscription(java.lang.String topicName,
java.lang.String user)
Low-level request to delete a subscription.
|
PromisedReply<ServerMessage> |
delTopic(java.lang.String topicName,
boolean hard)
Low-level request to delete topic.
|
void |
disconnect(boolean fromBkg)
Disconnect from the server.
|
java.lang.String |
getApiKey()
Get API key that was used for configuring this Tinode instance.
|
java.lang.String |
getAuthToken()
Get server-provided authentication token.
|
java.util.Date |
getAuthTokenExpiration()
Get expiration time of the authentication token, see
getAuthToken() |
java.net.URL |
getBaseUrl()
Get configured server address as an HTTP(S) URL.
|
LargeFileHelper |
getFileUploader()
Get
LargeFileHelper object initialized for use with file uploading. |
<T extends Topic> |
getFilteredTopics(Tinode.TopicFilter filter)
Return a list of topics which satisfy the filters.
|
<DP> FndTopic<DP> |
getFndTopic()
Obtain a 'fnd' topic (
FndTopic). |
java.lang.String |
getHttpOrigin()
Get server address suitable for use as an Origin: header for CORS compliance.
|
static com.fasterxml.jackson.databind.ObjectMapper |
getJsonMapper() |
protected static long |
getKeyPressDelay()
Get minimum delay between two subsequent key press notifications.
|
Storage.Message |
getLastMessage(java.lang.String topicName)
Get the latest cached message in the given topic.
|
PromisedReply<ServerMessage> |
getMeta(java.lang.String topicName,
MsgGetMeta query)
Low-level request to query topic for metadata.
|
<DP> MeTopic<DP> |
getMeTopic()
Obtain a 'me' topic (
MeTopic). |
java.lang.String |
getMyId()
Get ID of the current logged in user.
|
<DP> FndTopic<DP> |
getOrCreateFndTopic()
Get 'fnd' topic from cache.
|
<DP> MeTopic<DP> |
getOrCreateMeTopic()
Get 'me' topic from cache.
|
java.util.Map<java.lang.String,java.lang.String> |
getRequestHeaders()
Get map with HTTP request parameters suitable for requests to Tinode server.
|
java.lang.String |
getServerBuild()
Get server build stamp reported at the last connection
|
long |
getServerLimit(java.lang.String key,
long defaultValue)
Get server-provided limit.
|
java.lang.String |
getServerVersion()
Get the protocol version of the server that was reported at the last connection.
|
Topic |
getTopic(java.lang.String name)
Get topic by name.
|
java.util.Collection<Topic> |
getTopics()
Return a list of topics sorted by Topic.touched in descending order.
|
java.util.Date |
getTopicsUpdated()
Get the most recent timestamp of update to any topic.
|
static com.fasterxml.jackson.databind.type.TypeFactory |
getTypeFactory() |
protected com.fasterxml.jackson.databind.JavaType |
getTypeOfMetaPacket(java.lang.String topicName)
Obtain previously assigned type of Meta packet.
|
<SP> User<SP> |
getUser(@NotNull java.lang.String uid)
Look up user in a local cache: first in memory, then in persistent storage.
|
static java.util.Map<java.lang.String,java.lang.Object> |
headersForReply(int seq)
Headers for a reply message.
|
PromisedReply<ServerMessage> |
hello(java.lang.Boolean background)
Send a handshake packet to the server.
|
boolean |
isAuthenticated()
Check if the current session is authenticated.
|
boolean |
isConnected()
Check if connection is in a connected state.
|
boolean |
isMe(java.lang.String uid)
Check if the given user ID belong to the current logged in user.
|
static boolean |
isNull(java.lang.Object obj) |
boolean |
isTrustedURL(java.net.URL url)
Check if the given URL is trusted: points to Tinode server using HTTP or HTTPS protocol.
|
static <T> T |
jsonDeserialize(java.lang.String input,
java.lang.String canonicalName)
Convert JSON to an object.
|
static <T> T[] |
jsonDeserializeArray(java.lang.String input,
java.lang.String canonicalName)
Convert JSON to an array of objects.
|
static java.lang.String |
jsonSerialize(java.lang.Object o)
Convert object to JSON string.
|
PromisedReply<ServerMessage> |
leave(java.lang.String topicName,
boolean unsub)
Low-level request to unsubscribe topic.
|
protected PromisedReply<ServerMessage> |
login(java.lang.String combined) |
protected PromisedReply<ServerMessage> |
login(java.lang.String scheme,
java.lang.String secret,
Credential[] creds) |
PromisedReply<ServerMessage> |
loginBasic(java.lang.String uname,
java.lang.String password)
Send a basic login packet to the server.
|
PromisedReply<ServerMessage> |
loginToken(java.lang.String token)
Send a basic login packet to the server.
|
PromisedReply<ServerMessage> |
loginToken(java.lang.String token,
Credential[] creds)
Send a basic login packet to the server.
|
void |
logout()
Log out current user.
|
protected java.lang.String |
makeUserAgent()
Compose User Agent string to be sent to the server.
|
protected Topic |
maybeCreateTopic(MsgServerMeta meta)
Instantiate topic from {meta} packet using meta.desc.
|
void |
networkProbe()
Probe connection to the server by sending a test packet.
|
Topic |
newTopic(java.lang.String name,
Topic.Listener l)
Instantiate topic of an appropriate class given the name.
|
static Topic |
newTopic(Tinode tinode,
java.lang.String name,
Topic.Listener l)
Instantiate topic of an appropriate class given the name.
|
protected void |
note(java.lang.String topicName,
java.lang.String what,
int seq)
Inform all other topic subscribers of activity, such as receiving/reading a message or a
typing notification.
|
void |
noteKeyPress(java.lang.String topicName)
Send typing notification to all other topic subscribers.
|
void |
noteRead(java.lang.String topicName,
int seq)
Read receipt.
|
void |
noteRecv(java.lang.String topicName,
int seq)
Received receipt.
|
void |
oobNotification(java.util.Map<java.lang.String,java.lang.String> data,
java.lang.String authToken)
Out of band notification handling.
|
protected ServerMessage |
parseServerMessageFromJson(java.lang.String jsonMessage)
Parse JSON received from the server into
ServerMessage |
PromisedReply<ServerMessage> |
publish(java.lang.String topicName,
java.lang.Object data,
java.util.Map<java.lang.String,java.lang.Object> head,
java.lang.String[] attachments)
Low-level request to publish data.
|
void |
reconnectNow(boolean interactive,
boolean reset,
boolean background)
Make sure connection is either already established or being established:
- If connection is already established do nothing
- If connection does not exist, create
- If not connected and waiting for backoff timer, wake it up.
|
boolean |
removeListener(Tinode.EventListener listener)
Remove listener.
|
PromisedReply<ServerMessage> |
requestResetSecret(java.lang.String scheme,
java.lang.String method,
java.lang.String value)
Reset authentication secret, such as password.
|
protected void |
send(ClientMessage message)
Takes
ClientMessage, converts it to string writes to websocket. |
protected void |
send(java.lang.String message)
Writes a string to websocket.
|
protected PromisedReply<ServerMessage> |
sendWithPromise(ClientMessage message,
java.lang.String id)
Takes
ClientMessage, converts it to string writes to websocket. |
void |
setAutoLogin(java.lang.String scheme,
java.lang.String secret)
Tell Tinode to automatically login after connecting.
|
void |
setAutoLoginToken(java.lang.String token)
Tell Tinode to automatically login after connecting using token authentication scheme.
|
void |
setDefaultTypeOfMetaPacket(java.lang.Class<?> typeOfPublic,
java.lang.Class<?> typeOfPrivate)
Assign default types of generic parameters.
|
void |
setDefaultTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfPublic,
com.fasterxml.jackson.databind.JavaType typeOfPrivate)
Assign default types of generic parameters.
|
PromisedReply<ServerMessage> |
setDeviceToken(java.lang.String token)
Set device token for push notifications
|
void |
setFndTypeOfMetaPacket(java.lang.Class<?> typeOfSubPublic)
Assign type of generic Public parameter of 'fnd' topic results.
|
void |
setFndTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfSubPublic)
Assign type of generic Public parameter of 'fnd' topic results.
|
void |
setLanguage(java.lang.String lang)
Set device language
|
<Pu,Pr> PromisedReply<ServerMessage> |
setMeta(java.lang.String topicName,
MsgSetMeta<Pu,Pr> meta)
Low-level request to update topic metadata.
|
void |
setMeTypeOfMetaPacket(java.lang.Class<?> typeOfDescPublic)
Assign type of generic Public parameter to 'me' topic.
|
void |
setMeTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfDescPublic)
Assign type of generic Public parameter to 'me' topic.
|
void |
setOsString(java.lang.String os)
Set non-default version of OS string for User-Agent
|
void |
setServer(@NotNull java.lang.String host,
boolean tls)
Set server address and TLS status to be used in subsequent connections.
|
void |
setTypeOfMetaPacket(java.lang.String topicName,
com.fasterxml.jackson.databind.JavaType typeOfDescPublic,
com.fasterxml.jackson.databind.JavaType typeOfDescPrivate,
com.fasterxml.jackson.databind.JavaType typeOfSubPublic,
com.fasterxml.jackson.databind.JavaType typeOfSubPrivate)
Assign types of generic parameters to topic type.
|
<Pu,Pr> PromisedReply<ServerMessage> |
subscribe(java.lang.String topicName,
MsgSetMeta<Pu,Pr> set,
MsgGetMeta get)
Low-level subscription request.
|
java.net.URL |
toAbsoluteURL(java.lang.String origUrl)
Convert relative URL to absolute URL using Tinode server address as base.
|
PromisedReply<ServerMessage> |
updateAccountBasic(java.lang.String uid,
java.lang.String uname,
java.lang.String password)
Change user name and password for accounts using Basic auth scheme.
|
protected PromisedReply<ServerMessage> |
updateAccountSecret(java.lang.String uid,
java.lang.String scheme,
java.lang.String secret) |
public static final java.lang.String USER_NEW
public static final java.lang.String TOPIC_NEW
public static final java.lang.String CHANNEL_NEW
public static final java.lang.String TOPIC_ME
public static final java.lang.String TOPIC_FND
public static final java.lang.String TOPIC_SYS
public static final java.lang.String TOPIC_GRP_PREFIX
public static final java.lang.String TOPIC_CHN_PREFIX
public static final java.lang.String TOPIC_USR_PREFIX
public static final java.lang.String MAX_MESSAGE_SIZE
public static final java.lang.String MAX_SUBSCRIBER_COUNT
public static final java.lang.String MAX_TAG_LENGTH
public static final java.lang.String MIN_TAG_LENGTH
public static final java.lang.String MAX_TAG_COUNT
public static final java.lang.String MAX_FILE_UPLOAD_SIZE
public static final java.lang.String NULL_VALUE
protected static final java.lang.String NOTE_KP
protected static final java.lang.String NOTE_READ
protected static final java.lang.String NOTE_RECV
protected static final com.fasterxml.jackson.databind.type.TypeFactory sTypeFactory
protected static final java.text.SimpleDateFormat sDateFormat
public Tinode(java.lang.String appname,
java.lang.String apikey,
Storage store,
Tinode.EventListener listener)
appname - name of the calling application to be included in User Agent on handshake.apikey - API key generated by key-gen utilitystore - persistencelistener - EventListener which will receive notificationspublic Tinode(java.lang.String appname,
java.lang.String apikey,
Tinode.EventListener listener)
appname - name of the calling application to be included in User Agent on handshake.apikey - API key generated by key-gen utilitylistener - EventListener which will receive notificationspublic Tinode(java.lang.String appname,
java.lang.String apikey)
appname - name of the calling application to be included in User Agent on handshake.apikey - API key generated by key-gen utilitypublic static com.fasterxml.jackson.databind.type.TypeFactory getTypeFactory()
public static com.fasterxml.jackson.databind.ObjectMapper getJsonMapper()
public static boolean isNull(java.lang.Object obj)
public static java.lang.String jsonSerialize(java.lang.Object o)
throws com.fasterxml.jackson.core.JsonProcessingException
o - object to convertcom.fasterxml.jackson.core.JsonProcessingException - if object cannot be convertedpublic static <T> T jsonDeserialize(java.lang.String input,
java.lang.String canonicalName)
input - JSON string to parsecanonicalName - name of the class to generate from JSON.public static <T> T[] jsonDeserializeArray(java.lang.String input,
java.lang.String canonicalName)
input - JSON string to parsecanonicalName - name of the base class to use as elements of array.protected static long getKeyPressDelay()
public static Topic newTopic(Tinode tinode, java.lang.String name, Topic.Listener l)
tinode - instance of core Tinode to attach topic toname - name of the topic to createl - event listener; could be nullpublic static java.util.Map<java.lang.String,java.lang.Object> headersForReply(int seq)
seq - message ID being replied to.public void addListener(Tinode.EventListener listener)
listener - event listener to be notified. Should not be null.public boolean removeListener(Tinode.EventListener listener)
listener - event listener to be removed. Should not be null.public void setOsString(java.lang.String os)
protected PromisedReply<ServerMessage> connect(@NotNull @NotNull java.net.URI serverURI, boolean background)
serverURI - address of the server to connect to.background - this is a background connection: the server will delay user's online announcement for 5 sec.public PromisedReply<ServerMessage> connect(@Nullable @Nullable java.lang.String hostName, boolean tls, boolean background)
hostName - address of the server to connect to; if hostName is null a saved address will be used.tls - use transport layer security (wss); ignored if hostName is null.public void reconnectNow(boolean interactive,
boolean reset,
boolean background)
interactive - set to true if user directly requested a reconnect.reset - if true drop connection and reconnect; happens when cluster is reconfigured.public void disconnect(boolean fromBkg)
fromBkg - request to disconnect background connection.public void networkProbe()
isConnected() first.public java.net.URL getBaseUrl()
throws java.net.MalformedURLException
java.net.MalformedURLException - thrown if server address is not yet configured.public java.lang.String getHttpOrigin()
public void oobNotification(java.util.Map<java.lang.String,java.lang.String> data,
java.lang.String authToken)
data - FCM payload.authToken - authentication token to use in case login is needed.public java.lang.String getApiKey()
public java.lang.String getMyId()
public boolean isMe(java.lang.String uid)
uid - ID of the user to check.public java.lang.String getAuthToken()
public java.util.Date getAuthTokenExpiration()
getAuthToken()public boolean isAuthenticated()
public java.lang.String getServerVersion()
public java.lang.String getServerBuild()
public void setServer(@NotNull
@NotNull java.lang.String host,
boolean tls)
public long getServerLimit(java.lang.String key,
long defaultValue)
key - name of the limit.defaultValue - default value if limit is missing.public boolean isConnected()
public void setDefaultTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfPublic,
com.fasterxml.jackson.databind.JavaType typeOfPrivate)
typeOfPublic - - type of public values in Desc and Subscription.typeOfPrivate - - type of private values in Desc and Subscription.public void setDefaultTypeOfMetaPacket(java.lang.Class<?> typeOfPublic,
java.lang.Class<?> typeOfPrivate)
typeOfPublic - - type of public valuestypeOfPrivate - - type of private valuespublic void setTypeOfMetaPacket(java.lang.String topicName,
com.fasterxml.jackson.databind.JavaType typeOfDescPublic,
com.fasterxml.jackson.databind.JavaType typeOfDescPrivate,
com.fasterxml.jackson.databind.JavaType typeOfSubPublic,
com.fasterxml.jackson.databind.JavaType typeOfSubPrivate)
topicName - - name of the topic to assign type values for.typeOfDescPublic - - type of public valuestypeOfDescPrivate - - type of private valuestypeOfSubPublic - - type of public valuestypeOfSubPrivate - - type of private valuespublic void setMeTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfDescPublic)
typeOfDescPublic - - type of public valuespublic void setMeTypeOfMetaPacket(java.lang.Class<?> typeOfDescPublic)
typeOfDescPublic - - type of public valuespublic void setFndTypeOfMetaPacket(com.fasterxml.jackson.databind.JavaType typeOfSubPublic)
typeOfSubPublic - - type of subscription (search result) public valuespublic void setFndTypeOfMetaPacket(java.lang.Class<?> typeOfSubPublic)
typeOfSubPublic - - type of subscription (search result) public valuesprotected com.fasterxml.jackson.databind.JavaType getTypeOfMetaPacket(java.lang.String topicName)
protected java.lang.String makeUserAgent()
public LargeFileHelper getFileUploader()
LargeFileHelper object initialized for use with file uploading.public PromisedReply<ServerMessage> setDeviceToken(java.lang.String token)
token - device token; to delete token pass NULL_VALUEpublic void setLanguage(java.lang.String lang)
lang - ISO 639-1 code for languagepublic PromisedReply<ServerMessage> hello(java.lang.Boolean background)
background - indicator that this session should be treated as a service request,
i.e. presence notifications will be delayed.protected <Pu,Pr> PromisedReply<ServerMessage> account(java.lang.String uid, java.lang.String scheme, java.lang.String secret, boolean loginNow, java.lang.String[] tags, MetaSetDesc<Pu,Pr> desc, Credential[] cred)
uid - uid of the user to affectscheme - authentication scheme to usesecret - authentication secret for the chosen schemeloginNow - use the new account to login immediatelydesc - default access parameters for this accountpublic <Pu,Pr> PromisedReply<ServerMessage> createAccountBasic(java.lang.String uname, java.lang.String password, boolean login, java.lang.String[] tags, MetaSetDesc<Pu,Pr> desc, Credential[] cred)
uname - user namepassword - passwordlogin - use the new account for authenticationtags - discovery tagsdesc - account parameters, such as full name etc.cred - account credential, such as email or phoneprotected PromisedReply<ServerMessage> updateAccountSecret(java.lang.String uid, java.lang.String scheme, java.lang.String secret)
public PromisedReply<ServerMessage> updateAccountBasic(java.lang.String uid, java.lang.String uname, java.lang.String password)
uid - user ID being updateduname - new login or null to keep the old login.password - new password.public PromisedReply<ServerMessage> loginBasic(java.lang.String uname, java.lang.String password)
Tinode.EventListener.onLogin(int, String)uname - user namepassword - passwordpublic PromisedReply<ServerMessage> loginToken(java.lang.String token, Credential[] creds)
Tinode.EventListener.onLogin(int, String)token - server-provided security tokencreds - validation credentials.public PromisedReply<ServerMessage> loginToken(java.lang.String token)
Tinode.EventListener.onLogin(int, String)token - server-provided security tokenpublic PromisedReply<ServerMessage> requestResetSecret(java.lang.String scheme, java.lang.String method, java.lang.String value)
scheme - authentication scheme being reset.method - validation method to use, such as 'email' or 'tel'.value - address to send validation request to using the method above, e.g. 'jdoe@example.com'.protected PromisedReply<ServerMessage> login(java.lang.String combined)
protected PromisedReply<ServerMessage> login(java.lang.String scheme, java.lang.String secret, Credential[] creds)
scheme - authentication schemesecret - base64-encoded authentication secretcreds - credentials for validationPromisedReply resolved or rejected on completion.public void setAutoLogin(java.lang.String scheme,
java.lang.String secret)
scheme - authentication scheme to usesecret - authentication secretpublic void setAutoLoginToken(java.lang.String token)
token - auth token to use or null to disable auth-login.public void logout()
public <Pu,Pr> PromisedReply<ServerMessage> subscribe(java.lang.String topicName, MsgSetMeta<Pu,Pr> set, MsgGetMeta get)
Topic.subscribe() should be normally used instead.topicName - name of the topic to subscribe toset - values to be assign to topic on success.get - query for topic values.public PromisedReply<ServerMessage> leave(java.lang.String topicName, boolean unsub)
Topic.leave(boolean) should be normally
used instead.topicName - name of the topic to subscribe topublic PromisedReply<ServerMessage> publish(java.lang.String topicName, java.lang.Object data, java.util.Map<java.lang.String,java.lang.Object> head, java.lang.String[] attachments)
Topic.publish(co.tinode.tinodesdk.model.Drafty, java.util.Map<java.lang.String, java.lang.Object>, long) should be normally
used instead.topicName - name of the topic to publish todata - payload to publish to topichead - message headerattachments - URLs of out-of-band attachments contained in the message.public PromisedReply<ServerMessage> getMeta(java.lang.String topicName, MsgGetMeta query)
Topic.getMeta(co.tinode.tinodesdk.model.MsgGetMeta) should be normally
used instead.topicName - name of the topic to query.query - metadata querypublic <Pu,Pr> PromisedReply<ServerMessage> setMeta(java.lang.String topicName, MsgSetMeta<Pu,Pr> meta)
Topic.setMeta(co.tinode.tinodesdk.model.MsgSetMeta<DP, DR>) should be normally
used instead.topicName - name of the topic to publish tometa - metadata to assignpublic PromisedReply<ServerMessage> delMessage(java.lang.String topicName, int fromId, int toId, boolean hard)
Topic.delMessages(int, int, boolean) instead.topicName - name of the topic to informfromId - minimum ID to delete, inclusive (closed)toId - maximum ID to delete, exclusive (open)public PromisedReply<ServerMessage> delMessage(java.lang.String topicName, MsgRange[] ranges, boolean hard)
Topic.delMessages(MsgRange[], boolean) instead.topicName - name of the topic to informranges - delete all messages with ids these rangespublic PromisedReply<ServerMessage> delMessage(java.lang.String topicName, int seqId, boolean hard)
Topic.delMessages(MsgRange[], boolean) instead.topicName - name of the topic to informseqId - seqID of the message to delete.public PromisedReply<ServerMessage> delTopic(java.lang.String topicName, boolean hard)
Topic.delete(boolean) instead.topicName - name of the topic to deletehard - hard-delete topic.public PromisedReply<ServerMessage> delSubscription(java.lang.String topicName, java.lang.String user)
Topic.eject(String, boolean) ()} instead.topicName - name of the topicuser - user ID to unsubscribepublic PromisedReply<ServerMessage> delCredential(Credential cred)
MeTopic.delCredential(String, String) ()} instead.cred - credential to delete.public PromisedReply<ServerMessage> delCurrentUser(boolean hard)
hard - hard-deleteprotected void note(java.lang.String topicName,
java.lang.String what,
int seq)
topicName - name of the topic to informwhat - one or "read", "recv", "kp"seq - id of the message being acknowledgedpublic void noteKeyPress(java.lang.String topicName)
topicName - name of the topic to informpublic void noteRead(java.lang.String topicName,
int seq)
topicName - name of the topic to informseq - id of the message being acknowledgedpublic void noteRecv(java.lang.String topicName,
int seq)
topicName - name of the topic to informseq - id of the message being acknowledgedprotected void send(java.lang.String message)
message - string to write to websocketprotected void send(ClientMessage message) throws com.fasterxml.jackson.core.JsonProcessingException
ClientMessage, converts it to string writes to websocket.message - string to write to websocketcom.fasterxml.jackson.core.JsonProcessingExceptionprotected PromisedReply<ServerMessage> sendWithPromise(ClientMessage message, java.lang.String id)
ClientMessage, converts it to string writes to websocket.message - string to write to websocket.id - string used to identify message response so the promise can be resolved.public Topic newTopic(java.lang.String name, Topic.Listener l)
name - name of the topic to createl - event listener; could be nullpublic <DP> MeTopic<DP> getOrCreateMeTopic()
DP - type of Public value.public <DP> FndTopic<DP> getOrCreateFndTopic()
DP - type of Public value.protected Topic maybeCreateTopic(MsgServerMeta meta)
public <DP> MeTopic<DP> getMeTopic()
MeTopic).public <DP> FndTopic<DP> getFndTopic()
FndTopic).public java.util.Collection<Topic> getTopics()
List of topicspublic java.util.Date getTopicsUpdated()
public <T extends Topic> java.util.Collection<T> getFilteredTopics(Tinode.TopicFilter filter)
filter - filter object to select topics.List of topicspublic Topic getTopic(java.lang.String name)
name - name of the topic to find.public Storage.Message getLastMessage(java.lang.String topicName)
topicName - name of the topic to get message for.public <SP> User<SP> getUser(@NotNull @NotNull java.lang.String uid)
uid - ID of the user to find.User object or null if no such user is found in local cache.protected ServerMessage parseServerMessageFromJson(java.lang.String jsonMessage)
ServerMessagejsonMessage - message to parsenullpublic java.net.URL toAbsoluteURL(java.lang.String origUrl)
origUrl - possibly relative URL to convert to absolute.null if origUrl is invalid.public boolean isTrustedURL(java.net.URL url)
url - URL to check.public java.util.Map<java.lang.String,java.lang.String> getRequestHeaders()