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.JsonProcessingException
protected 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)
ServerMessage
jsonMessage
- message to parsenull
public 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()