mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) FIRST 2016-2017. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#ifndef NT_INSTANCEIMPL_H_
|
|
#define NT_INSTANCEIMPL_H_
|
|
|
|
#include <atomic>
|
|
#include <memory>
|
|
|
|
#include "support/mutex.h"
|
|
#include "support/UidVector.h"
|
|
|
|
#include "ConnectionNotifier.h"
|
|
#include "Dispatcher.h"
|
|
#include "DsClient.h"
|
|
#include "EntryNotifier.h"
|
|
#include "Log.h"
|
|
#include "LoggerImpl.h"
|
|
#include "RpcServer.h"
|
|
#include "Storage.h"
|
|
|
|
namespace nt {
|
|
|
|
class InstanceImpl {
|
|
public:
|
|
explicit InstanceImpl(int inst);
|
|
~InstanceImpl();
|
|
|
|
// Instance repository
|
|
static InstanceImpl* GetDefault();
|
|
static InstanceImpl* Get(int inst);
|
|
static int GetDefaultIndex();
|
|
static int Alloc();
|
|
static void Destroy(int inst);
|
|
|
|
LoggerImpl logger_impl;
|
|
wpi::Logger logger;
|
|
ConnectionNotifier connection_notifier;
|
|
EntryNotifier entry_notifier;
|
|
RpcServer rpc_server;
|
|
Storage storage;
|
|
Dispatcher dispatcher;
|
|
DsClient ds_client;
|
|
|
|
private:
|
|
static int AllocImpl();
|
|
|
|
static std::atomic<int> s_default;
|
|
static std::atomic<InstanceImpl*> s_fast_instances[10];
|
|
static wpi::UidVector<std::unique_ptr<InstanceImpl>, 10> s_instances;
|
|
static wpi::mutex s_mutex;
|
|
};
|
|
|
|
} // namespace nt
|
|
|
|
#endif // NT_INSTANCEIMPL_H_
|