33 #include <netinet/ip.h>
41 #include "amps_generated.h"
46 #define AMPSDLL __declspec(dllexport)
48 #define AMPSDLL __declspec(dllimport)
53 #define AMPS_USLEEP(x) Sleep((DWORD)(x)/(DWORD)1000);
54 #define AMPS_YIELD() SwitchToThread()
55 typedef HANDLE AMPS_THREAD_T;
56 typedef SOCKET AMPS_SOCKET;
57 typedef __int32 amps_int32_t;
58 typedef unsigned __int32 amps_uint32_t;
59 typedef __int64 amps_int64_t;
60 typedef unsigned __int64 amps_uint64_t;
63 #define AMPS_USLEEP(x) usleep((unsigned int)(x));
64 #define AMPS_YIELD() sched_yield()
65 typedef pthread_t AMPS_THREAD_T;
66 typedef int AMPS_SOCKET;
67 typedef int32_t amps_int32_t;
68 typedef uint32_t amps_uint32_t;
69 typedef int64_t amps_int64_t;
70 typedef uint64_t amps_uint64_t;
73 #if defined(_WIN32) || defined(__SSE_4_2__)
179 typedef char amps_char;
253 typedef void(*amps_predisconnect_handler)(
amps_handle, unsigned,
void*);
266 const amps_char* clientName);
280 const amps_char* clientName);
291 const amps_char* uri);
319 amps_char* errorMessageOut,
344 unsigned* version_out);
357 amps_handler messageHandler,
370 amps_predisconnect_handler predisconnectHandler,
383 amps_handler disconnectHandler,
454 const amps_char** value_ptr,
467 const amps_char* value,
480 const amps_char* value,
493 const amps_char* value);
514 const amps_char* value,
525 const amps_char* value,
535 const amps_char* value);
551 amps_char** value_ptr,
675 AMPSDLL amps_uint64_t
739 AMPSDLL
void amps_noOpFn(
void*);
744 AMPSDLL
void amps_set_waiting_function(
void*);
745 AMPSDLL
void amps_invoke_waiting_function(
void);
746 AMPSDLL
void amps_set_remove_route_function(
void*);
747 AMPSDLL
void amps_invoke_remove_route_function(
void*);
748 AMPSDLL
void amps_set_copy_route_function(
void*);
749 AMPSDLL
void* amps_invoke_copy_route_function(
void*);
753 #if !defined(_AMPS_BUILD_C_CLIENT) && !defined(_AMPS_SKIP_AMPSPLUSPLUS)
AMPSDLL int amps_ssl_set_verify(int mode_)
Configures OpenSSL to validate the server's certificate when connecting.
AMPSDLL void amps_client_disconnect(amps_handle handle)
Disconnects from the AMPS server, if connected.
AMPSDLL amps_handle amps_message_create(amps_handle client)
Functions for creation and manipulation of AMPS messages.
AMPSDLL void amps_message_set_data(amps_handle message, const amps_char *value, size_t length)
Sets the data component of an AMPS message.
AMPSDLL int amps_ssl_init(const char *dllPath_)
Initializes SSL support in the AMPS Client.
AMPSDLL void amps_message_get_field_value(amps_handle message, FieldId field, const amps_char **value_ptr, size_t *length_ptr)
Retrieves the value of a header field in an AMPS message.
AMPSDLL void amps_client_destroy(amps_handle handle)
Disconnects and destroys an AMPS client object.
AMPSDLL void amps_ssl_free(void)
Frees OpenSSL context and shared library.
AMPSDLL amps_result amps_client_connect(amps_handle handle, const amps_char *uri)
Connects to the AMPS server specified in uri.
AMPSDLL amps_result amps_client_send(amps_handle client, amps_handle message)
Sends a message to the AMPS server.
AMPSDLL void amps_message_assign_field_value(amps_handle message, FieldId field, const amps_char *value, size_t length)
Assigns the value of a header field in an AMPS message, without copying the value.
AMPSDLL const char * amps_ssl_get_error(void)
Returns the description of the last error from calling amps_ssl_init().
AMPSDLL void amps_message_set_data_nts(amps_handle message, const amps_char *value)
Sets the data component of an AMPS message.
AMPSDLL void amps_message_reset(amps_handle message)
Clears all fields and data in a message.
AMPSDLL AMPS_SOCKET amps_tcp_get_socket(amps_handle transport)
TRANSPORT-SPECIFIC APIS.
AMPSDLL amps_uint64_t amps_message_get_field_uint64(amps_handle message, FieldId field)
Gets the unsigned 64-bit int value of a header field in an AMPS message.
AMPSDLL amps_result amps_client_set_name(amps_handle handle, const amps_char *clientName)
Sets the name on an amps client object.
amps_result
Return values from amps_xxx functions.
Definition: amps.h:193
@ AMPS_E_RETRY
The operation has not succeeded, but ought to be retried.
Definition: amps.h:221
@ AMPS_E_USAGE
The usage of this function is invalid.
Definition: amps.h:245
@ AMPS_E_URI
The specified URI is invalid.
Definition: amps.h:237
@ AMPS_E_OK
Success.
Definition: amps.h:197
@ AMPS_E_MEMORY
A memory error occured.
Definition: amps.h:201
@ AMPS_E_DISCONNECTED
The client and server are disconnected.
Definition: amps.h:225
@ AMPS_E_STREAM
A stream error has occured.
Definition: amps.h:233
@ AMPS_E_COMMAND
An error with a command occured.
Definition: amps.h:205
@ AMPS_E_SSL
A Secure Sockets Layer (SSL) error occured.
Definition: amps.h:249
@ AMPS_E_TRANSPORT_TYPE
The specified transport type is invalid.
Definition: amps.h:241
@ AMPS_E_TOPIC
The specified topic was invalid.
Definition: amps.h:213
@ AMPS_E_CONNECTION_REFUSED
The server could not be found, or it actively refused our connection.
Definition: amps.h:229
@ AMPS_E_CONNECTION
A connection error occured.
Definition: amps.h:209
@ AMPS_E_FILTER
The specified filter was invalid.
Definition: amps.h:217
AMPSDLL amps_result amps_client_attempt_reconnect(amps_handle client, unsigned version)
Manually invokes the user-supplied disconnect handler for this client.
AMPSDLL amps_handle amps_client_get_transport(amps_handle client)
Returns a handle to the transport set in client, or NULL if no transport is associated with this tran...
AMPSDLL void amps_message_destroy(amps_handle message)
Destroys and frees the memory associated with an AMPS message object.
AMPSDLL amps_result amps_client_set_read_timeout(amps_handle client, int readTimeout)
Sets a read timeout (seconds), in which if no message is received, the connection is presumed dead.
AMPSDLL void amps_message_assign_data(amps_handle message, const amps_char *value, size_t length)
Assigns the data component of an AMPS message, without copying the value.
AMPSDLL void amps_message_set_field_value_nts(amps_handle message, FieldId field, const amps_char *value)
Sets the value of a header field in an AMPS message from a null-terminated string.
amps_result(* amps_thread_created_callback)(AMPS_THREAD_T, void *)
Prototype for a user-supplied callback function to allow thread attributes to be set when a new threa...
Definition: amps.h:635
AMPSDLL amps_result amps_client_set_transport_filter_function(amps_handle client, amps_transport_filter_function filter, void *userData)
Sets a user-supplied callback function for filtering data before it is sent and after it is received.
AMPSDLL void amps_message_set_field_guid(amps_handle message, FieldId field)
Sets the value of a header field in an AMPS message to a new, globally unique identifier("GUID")
AMPSDLL amps_handle amps_message_copy(amps_handle message)
Creates and returns a handle to a new AMPS message object that is a deep copy of the message passed i...
AMPSDLL amps_result amps_client_set_thread_created_callback(amps_handle client, amps_thread_created_callback callback, void *userData)
Sets a user-supplied callback function to allow thread attributes to set when a new thread is created...
AMPSDLL size_t amps_client_get_error(amps_handle client, amps_char *errorMessageOut, size_t bufferSize)
Returns the last error set on this client.
AMPSDLL void amps_message_set_field_value(amps_handle message, FieldId field, const amps_char *value, size_t length)
Sets the value of a header field in an AMPS message.
AMPSDLL void amps_client_set_predisconnect_handler(amps_handle client, amps_predisconnect_handler predisconnectHandler, void *userData)
Sets the predisconnect handler function to be called when a disconnect occurs.
AMPSDLL int amps_ssl_load_verify_locations(const char *caFile_, const char *caPath_)
Configures OpenSSL to use the specified locations for locating CA certificates.
AMPSDLL amps_result amps_client_send_with_version(amps_handle client, amps_handle message, unsigned *version_out)
Sends a message to the AMPS server.
AMPSDLL void amps_client_set_message_handler(amps_handle client, amps_handler messageHandler, void *userData)
Sets the message handler function for this client.
void * amps_handle
Opaque handle type used to refer to objects in the AMPS api.
Definition: amps.h:187
void(* amps_transport_filter_function)(const unsigned char *, size_t, short, void *)
Prototype for a user-supplied callback function for filtering data before it is sent and after it is ...
Definition: amps.h:609
AMPSDLL amps_result amps_client_set_idle_time(amps_handle client, int idleTime)
Sets an idle-time (milliseconds).
AMPSDLL unsigned long amps_message_get_field_long(amps_handle message, FieldId field)
Gets the long integer value of a header field in an AMPS message.
AMPSDLL void amps_message_get_data(amps_handle message, amps_char **value_ptr, size_t *length_ptr)
Gets the data component of an AMPS message.
AMPSDLL void * amps_tcps_get_SSL(amps_handle transport)
Retrieves the SSL object from the underlying TCPS transport.
AMPSDLL amps_handle amps_client_create(const amps_char *clientName)
Functions for creation of an AMPS client.
AMPSDLL void amps_client_set_disconnect_handler(amps_handle client, amps_handler disconnectHandler, void *userData)
Sets the disconnect handler function to be called when a disconnect occurs.
Core type, function, and class declarations for the AMPS C++ client.