220 lines
8.9 KiB
Objective-C
220 lines
8.9 KiB
Objective-C
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#import "OCTToxConstants.h"
|
|
|
|
@class OCTTox;
|
|
|
|
/**
|
|
* All delegate methods will be called on main thread.
|
|
*/
|
|
@protocol OCTToxDelegate <NSObject>
|
|
|
|
@optional
|
|
|
|
/**
|
|
* User connection status changed.
|
|
*
|
|
* @param connectionStatus New connection status of the user.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox connectionStatus:(OCTToxConnectionStatus)connectionStatus;
|
|
|
|
/**
|
|
* Received friend request from a new friend.
|
|
*
|
|
* @param message Message sent with request.
|
|
* @param publicKey New friend public key.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendRequestWithMessage:(NSString *)message publicKey:(NSString *)publicKey;
|
|
|
|
/**
|
|
* Message received from a friend.
|
|
*
|
|
* @param message Received message.
|
|
* @param type Type of the message.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
* @param msgv3HashHex messageV3 Hash as Hexstring or nil.
|
|
* @param sendTimestamp unixtimestamp. if msgv3HashHex is nil then timestamp is ignored and current time is used.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendMessage:(NSString *)message
|
|
type:(OCTToxMessageType)type
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
msgv3HashHex:(NSString *)msgv3HashHex
|
|
sendTimestamp:(uint32_t)sendTimestamp;
|
|
|
|
/**
|
|
* Send msgV3 high level ACK message.
|
|
*
|
|
* @param message Message text.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
* @param msgv3HashHex messageV3 Hash as Hexstring.
|
|
* @param sendTimestamp unixtimestamp.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox sendFriendHighlevelACK:(NSString *)message
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
msgv3HashHex:(NSString *)msgv3HashHex
|
|
sendTimestamp:(uint32_t)sendTimestamp;
|
|
/**
|
|
* Friend's name was updated.
|
|
*
|
|
* @param name Updated name.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendNameUpdate:(NSString *)name friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Friend's Push Token was updated.
|
|
*
|
|
* @param pushToken Updated Push Token.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendPushTokenUpdate:(NSString *)pushToken friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Friend's status message was updated.
|
|
*
|
|
* @param statusMessage Updated status message.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendStatusMessageUpdate:(NSString *)statusMessage friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Friend's status was updated.
|
|
*
|
|
* @param status Updated status.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendStatusUpdate:(OCTToxUserStatus)status friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Friend's isTyping was updated
|
|
*
|
|
* @param isTyping Updated typing status.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendIsTypingUpdate:(BOOL)isTyping friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Friend's Msgv3Capability needs to be updated
|
|
*
|
|
* @param msgv3Capability Updated msgV3 status.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendSetMsgv3Capability:(BOOL)msgv3Capability friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Message that was previously sent by us has been delivered to a friend.
|
|
*
|
|
* @param messageId Id of message. You could get in in sendMessage method.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox messageDelivered:(OCTToxMessageId)messageId friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* Message that was previously sent by us has been delivered to a friend.
|
|
*
|
|
* @param message Received message. UNUSED for now.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
* @param msgv3HashHex messageV3 Hash as Hexstring.
|
|
* @param sendTimestamp unixtimestamp.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendHighLevelACK:(NSString *)message
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
msgv3HashHex:(NSString *)msgv3HashHex
|
|
sendTimestamp:(uint32_t)sendTimestamp;
|
|
|
|
/**
|
|
* Friend's connection status changed.
|
|
*
|
|
* @param status Updated status.
|
|
* @param friendNumber Friend number of appropriate friend.
|
|
*/
|
|
- (void)tox:(OCTTox *)tox friendConnectionStatusChanged:(OCTToxConnectionStatus)status friendNumber:(OCTToxFriendNumber)friendNumber;
|
|
|
|
/**
|
|
* This event is triggered when a file control command is received from a friend.
|
|
*
|
|
* When receiving OCTToxFileControlCancel, the client should release the
|
|
* resources associated with the file number and consider the transfer failed.
|
|
*
|
|
* @param control The control command to send.
|
|
* @param friendNumber The friend number of the friend the file is being transferred to or received from.
|
|
* @param fileNumber The friend-specific identifier for the file transfer.
|
|
*/
|
|
- (void) tox:(OCTTox *)tox fileReceiveControl:(OCTToxFileControl)control
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
fileNumber:(OCTToxFileNumber)fileNumber;
|
|
|
|
/**
|
|
* If the length parameter is 0, the file transfer is finished, and the client's
|
|
* resources associated with the file number should be released. After a call
|
|
* with zero length, the file number can be reused for future file transfers.
|
|
*
|
|
* If the requested position is not equal to the client's idea of the current
|
|
* file or stream position, it will need to seek. In case of read-once streams,
|
|
* the client should keep the last read chunk so that a seek back can be
|
|
* supported. A seek-back only ever needs to read from the last requested chunk.
|
|
* This happens when a chunk was requested, but the send failed. A seek-back
|
|
* request can occur an arbitrary number of times for any given chunk.
|
|
*
|
|
* In response to receiving this callback, the client should call the method
|
|
* `fileSendChunk` with the requested chunk. If the number of bytes sent
|
|
* through that method is zero, the file transfer is assumed complete. A
|
|
* client must send the full length of data requested with this callback.
|
|
*
|
|
* @param friendNumber The friend number of the receiving friend for this file.
|
|
* @param fileNumber The file transfer identifier returned by fileSend.
|
|
* @param position The file or stream position from which to continue reading.
|
|
* @param length The number of bytes requested for the current chunk.
|
|
*/
|
|
- (void) tox:(OCTTox *)tox fileChunkRequestForFileNumber:(OCTToxFileNumber)fileNumber
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
position:(OCTToxFileSize)position
|
|
length:(size_t)length;
|
|
|
|
/**
|
|
* The client should acquire resources to be associated with the file transfer.
|
|
* Incoming file transfers start in the PAUSED state. After this callback
|
|
* returns, a transfer can be rejected by sending a OCTToxFileControlCancel
|
|
* control command before any other control commands. It can be accepted by
|
|
* sending OCTToxFileControlResume.
|
|
*
|
|
* @param fileNumber The friend-specific file number the data received is associated with.
|
|
* @param friendNumber The friend number of the friend who is sending the file transfer request.
|
|
* @param kind The meaning of the file to be sent.
|
|
* @param fileSize Size in bytes of the file about to be received from the client, kOCTToxFileSizeUnknown if unknown or streaming.
|
|
* @param fileName The name of the file.
|
|
*/
|
|
- (void) tox:(OCTTox *)tox fileReceiveForFileNumber:(OCTToxFileNumber)fileNumber
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
kind:(OCTToxFileKind)kind
|
|
fileSize:(OCTToxFileSize)fileSize
|
|
fileName:(NSString *)fileName;
|
|
|
|
/**
|
|
* This method is first called when a file transfer request is received, and
|
|
* subsequently when a chunk of file data for an accepted request was received.
|
|
*
|
|
* When chunk is nil, the transfer is finished and the client should release the
|
|
* resources it acquired for the transfer. After a call with chunk = nil, the
|
|
* file number can be reused for new file transfers.
|
|
*
|
|
* If position is equal to fileSize (received in the fileReceive callback)
|
|
* when the transfer finishes, the file was received completely. Otherwise, if
|
|
* fileSize was kOCTToxFileSizeUnknown, streaming ended successfully when chunk is nil.
|
|
*
|
|
* @param chunk A data containing the received chunk.
|
|
* @param fileNumber The friend-specific file number the data received is associated with.
|
|
* @param friendNumber The friend number of the friend who is sending the file.
|
|
* @param position The file position of the first byte in data.
|
|
*/
|
|
- (void) tox:(OCTTox *)tox fileReceiveChunk:(NSData *)chunk
|
|
fileNumber:(OCTToxFileNumber)fileNumber
|
|
friendNumber:(OCTToxFriendNumber)friendNumber
|
|
position:(OCTToxFileSize)position;
|
|
|
|
@end
|