namespace Core::Platform

Overview

namespace Platform {

// namespaces

namespace Core::Platform::CurrentProcess;
namespace Core::Platform::CurrentThread;
namespace Core::Platform::Debug;
namespace Core::Platform::FileSystem;
namespace Core::Platform::HighPerformanceClock;
namespace Core::Platform::Network;
namespace Core::Platform::PosixSocketSets;
namespace Core::Platform::SSLTypes;
namespace Core::Platform::SocketSets;
namespace Core::Platform::StaticThreads;
namespace Core::Platform::SystemClock;
    namespace Core::Platform::SystemClock::Helper;
namespace Core::Platform::TLS;

// typedefs

typedef const DiscoveryContext* DiscoveryRef;
typedef AndroidTextRecord TextRecord;
typedef AndroidTextRecordBuilder TextRecordBuilder;
typedef ServiceTargetDescriptorBase<AndroidTextRecord> ServiceTargetDescriptor;
typedef BrowseReplyHandlerBase<AndroidTextRecord, DiscoveryRef> BrowseReplyHandler;
typedef RegisterReplyHandlerBase<DiscoveryRef> RegisterReplyHandler;
typedef PosixFileIterator FileIterator;
typedef PosixFileStream FileStream;
typedef PosixSharedMemory SharedMemory;
typedef PosixSemaphore Semaphore;
typedef PosixPipe Pipe;
typedef AndroidSocket Socket;
typedef PosixSocketIDSet SocketIDSet;
typedef AndroidSSLContext SSLContext;
typedef AndroidThread Thread;
typedef PosixLock Lock;
typedef PosixSignal Signal;
typedef RecursiveReadWriteLock<PosixReadWriteLock, Lock> AndroidRecursiveReadWriteLock;
typedef AndroidRecursiveReadWriteLock ReadWriteLock;
typedef CocoaAtomicStack AtomicStack;
typedef CocoaDynamicLibrary DynamicLibrary;
typedef SocketAddressConverter PosixSocketAddressConverter;
typedef PosixAdapterIterator AdapterIterator;
typedef RecursiveReadWriteLock<PosixReadWriteLock, Lock> LinuxRecursiveReadWriteLock;
typedef int TextRecordRef;
typedef UIntPtr SocketID;
typedef sockaddr NativeSocketAddress;
typedef ServiceTargetDescriptorBase<PosixTextRecord> PosixServiceTargetDescriptor;
typedef BrowseReplyHandlerBase<PosixTextRecord, DiscoveryRef> PosixBrowseReplyHandler;
typedef RegisterReplyHandlerBase<DiscoveryRef> PosixRegisterReplyHandler;
typedef int* DIR;
typedef ::ADDRESS_FAMILY sa_family_t;
typedef RecursiveReadWriteLock<Win32ReadWriteLock, Lock> Win32RecursiveReadWriteLock;

// structs

struct AndroidTextRecordData;

template <typename TextRecord, typename DiscoveryRef>
struct BrowseReplyHandlerBase;

template <typename T>
struct IAdapterIterator;

struct IAtomicStack;
struct IDynamicLibrary;
struct IFileIterator;
struct IFileStream;
struct IFileSystem;
struct ILock;
struct INetwork;
struct IPipe;
struct IReadWriteLock;
struct ISSLContext;
struct ISSLContextIOHandler;
struct ISemaphore;
struct ISharedMemory;
struct ISignal;
struct ISocket;
struct ISocketIDSet;
struct ISystemSupervisor;
struct ITextRecord;
struct IThread;
struct IThreadEntry;
struct ListEntry;
struct ListHeader;
struct PosixTextRecord;

template <typename DiscoveryRef>
struct RegisterReplyHandlerBase;

struct ServiceDescriptor;

template <typename TextRecord>
struct ServiceTargetDescriptorBase;

struct SocketAddressConverter;
struct TextRecord;
struct ThreadInfo;
struct ThreadPriorityHandler;
struct TypeDescriptor;
struct dirent;

// classes

class AndroidFileSystem;
class AndroidSSLContext;
class AndroidSocket;
class AndroidTextRecord;
class AndroidTextRecordBuilder;
class AndroidThread;
class AzureLock;
class AzureReadWriteLock;
class AzureSignal;
class AzureThread;
class CmsisLock;
class CmsisReadWriteLock;
class CmsisSignal;
class CmsisThread;
class CocoaAtomicStack;
class CocoaDynamicLibrary;
class CocoaFileSystem;
class CocoaNetwork;
class CocoaSSLContext;
class CocoaSocket;
class CocoaThread;
class CtlLock;
class CtlReadWriteLock;
class CtlSignal;
class CtlThread;
class DiscoveryBrowseContext;
class DiscoveryContext;
class DiscoveryHandler;
class DiscoveryServiceContext;
class DynamicLibraryStub;
class FileIteratorBase;
class FileIteratorStub;
class FileStreamStub;
class FileSystemStub;

template <class SupervisorConfig>
class FixedSystemSupervisor;

template <typename TextRecord>
class ITextRecordBuilder;

class LKLock;
class LKReadWriteLock;
class LKSignal;
class LKThread;
class LinuxSemaphore;
class LinuxThread;
class LockStub;
class LwIPAdapterIterator;
class LwIPNetwork;
class LwIPSocket;
class OpenSSLContext;
class OpenSSLInitializer;
class PipeStub;
class PosixAdapterIterator;
class PosixAtomicStack;
class PosixDiscoveryHandler;
class PosixDynamicLibrary;
class PosixFileIterator;
class PosixFileStream;
class PosixFileSystem;
class PosixLock;
class PosixNetwork;
class PosixPipe;
class PosixReadWriteLock;
class PosixSemaphore;
class PosixSharedMemory;
class PosixSignal;
class PosixSocket;
class PosixSocketIDSet;
class PosixTextRecordBuilder;
class PosixThread;
class ReadWriteLockStub;

template <class RWLock, class Lock>
class RecursiveReadWriteLock;

class RegTypeString;
class SSLContextStub;
class SecureChannel;
class SemaphoreStub;
class SharedMemoryStub;
class SignalStub;
class StreamBuffer;
class TI32Socket;
class TextRecordBuilder;
class ThreadStub;
class Win32AdapterIterator;
class Win32AtomicStack;
class Win32DynamicLibrary;
class Win32FileIterator;
class Win32FileSystem;
class Win32Lock;
class Win32Network;
class Win32Pipe;
class Win32ReadWriteLock;
class Win32SSLContext;
class Win32Semaphore;
class Win32SharedMemory;
class Win32Signal;
class Win32Socket;
class Win32Thread;
class WindowsTextRecord;
class WindowsTextRecordBuilder;
class ZephyrLock;
class ZephyrReadWriteLock;
class ZephyrSignal;
class ZephyrThread;

// global variables

getHost getPort getServiceName getServiceType getAttributes removeAttribute;
getHost getPort getServiceName getServiceType getAttributes jstring V Ljava net InetAddress;
V I V Ljava lang String;
V CORE_CLASS_PREFIX NsdAdapter discoverServices;
V CORE_CLASS_PREFIX NsdAdapter jstring resolveService;
V CORE_CLASS_PREFIX NsdAdapter jstring jobject unregisterService;
V CORE_CLASS_PREFIX NsdAdapter jstring jobject jobject J V L CORE_CLASS_PREFIX NsdDiscoveryHandler;
V Landroid net nsd NsdServiceInfo;
L CORE_CLASS_PREFIX NsdRegistrationHandler;
getCacheDir Ljava io File;
dev ccl core CurrentContext Landroid content Context;
const CStringPtr kThreadName = "Android Thread";
static const long kSec2Micro = 1000000L;
static const long kSec2Milli = 1000L;
static const long kSec2Nano = 1000000000L;
const unsigned char DT_DIR = 0;

// global functions

DECLARE_JNI_CLASS(NsdServiceInfo, "android/net/nsd/NsdServiceInfo");
getHost DECLARE_JNI_METHOD(void, setHost, jobject);
getHost getPort DECLARE_JNI_METHOD(void, setPort, int);
getHost getPort getServiceName DECLARE_JNI_METHOD(void, setServiceName, jstring);

getHost getPort getServiceName getServiceType DECLARE_JNI_METHOD(
    void,
    setServiceType,
    jstring
);

getHost getPort getServiceName getServiceType getAttributes DECLARE_JNI_METHOD(
    void,
    setAttribute,
    jstring,
    jstring
);

getHost getPort getServiceName getServiceType getAttributes jstring END_DECLARE_JNI_CLASS(NsdServiceInfo);

getHost getPort getServiceName getServiceType getAttributes jstring V DEFINE_JNI_METHOD(
    getHost,
    "()Ljava/net/InetAddress;"
);

V DEFINE_JNI_METHOD(getPort, "()I");
V I V DEFINE_JNI_METHOD(getServiceName, "()Ljava/lang/String;");
V DEFINE_JNI_METHOD(getServiceType, "()Ljava/lang/String;");
V DEFINE_JNI_METHOD(getAttributes, "()Ljava/util/Map;");
V DEFINE_JNI_METHOD(removeAttribute, "(Ljava/lang/String;)V");

V CORE_CLASS_PREFIX NsdAdapter DECLARE_JNI_CONSTRUCTOR(
    construct,
    Java::JniIntPtr
);

V CORE_CLASS_PREFIX NsdAdapter jstring DECLARE_JNI_METHOD(
    void,
    stopDiscovery,
    jobject
);

V CORE_CLASS_PREFIX NsdAdapter jstring jobject DECLARE_JNI_METHOD(
    jobject,
    registerService,
    jobject
);

V CORE_CLASS_PREFIX NsdAdapter jstring jobject jobject END_DECLARE_JNI_CLASS(NsdAdapter);

V CORE_CLASS_PREFIX NsdAdapter jstring jobject jobject J V DEFINE_JNI_METHOD(
    discoverServices,
    "(Ljava/lang/String;)L" CORE_CLASS_PREFIX "NsdDiscoveryHandler;"
);

V DEFINE_JNI_METHOD(
    resolveService,
    "(Landroid/net/nsd/NsdServiceInfo;)L" CORE_CLASS_PREFIX "NsdResolveHandler;"
);

DECLARE_JNI_CLASS(Context, "android/content/Context");
getCacheDir DECLARE_JNI_METHOD(jobject, getFilesDir);
DEFINE_JNI_METHOD(getFilesDir, "()Ljava/io/File;");
dev ccl core CurrentContext DECLARE_JNI_STATIC_METHOD(jobject, get);
int shm_open(const char* name, int oflag, mode_t mode);
int pthread_yield(void);
int pthread_cancel(pthread_t thread);
int pthread_attr_setinheritsched(pthread_attr_t* attr, int flag);
INLINE void MemoryFence();
INLINE int32 AtomicAdd(int32 volatile& variable, int32 value);
INLINE int32 AtomicSet(int32 volatile& variable, int32 value);
INLINE int32 AtomicGet(const int32 volatile& variable);

INLINE bool AtomicTestAndSet(
    int32 volatile& variable,
    int32 value,
    int32 comperand
);

INLINE void* AtomicSetPtr(void*volatile& variable, void* value);
INLINE void* AtomicGetPtr(void*const volatile& variable);

INLINE bool AtomicTestAndSetPtr(
    void*volatile& variable,
    void* value,
    void* comperand
);

ISystemSupervisor& GetSystemSupervisor();
int closedir(DIR* handle);
DIR* opendir(const char* name);
dirent* readdir(DIR* dirp);
int mkdir(const char* path, int mode);
int truncate(const char* path, off_t length);

} // namespace Platform

Detailed Documentation

Typedefs

typedef SocketAddressConverter PosixSocketAddressConverter

Helper class to convert from Core-style to native address.

Global Functions

INLINE void MemoryFence()

A full memory barrier synchronizing data in all threads.

INLINE int32 AtomicAdd(int32 volatile& variable, int32 value)

Atomic addition.

Parameters:

variable

First addend and variable to store the result

value

Second addend

Returns:

The initial value of variable

INLINE int32 AtomicSet(int32 volatile& variable, int32 value)

Atomic assignment.

Parameters:

variable

Variable to assign the value to

value

The value to assign

Returns:

The initial value of variable

INLINE int32 AtomicGet(const int32 volatile& variable)

Get the value of a variable.

Parameters:

variable

Variable to get the value from

Returns:

The value of variable

INLINE bool AtomicTestAndSet(
    int32 volatile& variable,
    int32 value,
    int32 comperand
)

Atomic compare-and-exchange.

Compares variable and comperand. If both are equal, value is stored into variable. Otherwise, no operation is performed.

Parameters:

variable

Variable to assign the value to

value

The value to assign

comperand

Value to compare variable to

Returns:

True if variable and comperand were equal. False otherwise.

INLINE void* AtomicSetPtr(void*volatile& variable, void* value)

Atomic pointer assignment.

Parameters:

variable

Variable to assign the value to

value

The value to assign

Returns:

The initial value of variable

INLINE void* AtomicGetPtr(void*const volatile& variable)

Get the address of a pointer.

Parameters:

variable

Variable to get the value from

Returns:

The value of variable

INLINE bool AtomicTestAndSetPtr(
    void*volatile& variable,
    void* value,
    void* comperand
)

Atomic compare-and-exchange for pointer values.

Compares variable and comperand. If both are equal, value is stored into variable. Otherwise, no operation is performed.

Parameters:

variable

Variable to assign the value to

value

The value to assign

comperand

Value to compare variable to

Returns:

True if variable and comperand were equal. False otherwise.