1 #ifndef NETSTORAGE_HANDLER__HPP
2 #define NETSTORAGE_HANDLER__HPP
98 bool need_progress_report);
121 virtual void OnOpen(
void);
122 virtual void OnRead(
void);
168 const char * output_buffer,
169 size_t output_buffer_size);
307 bool need_fake_write =
false);
321 bool expect_object =
true)
const;
342 const string & user_message);
355 const string & object_key,
~CMessageListenerResetter()
CMessageListenerResetter()
EIO_Status x_SendSyncMessage(const CJsonNode &message, ESocketTimeoutTreat timeout_treat=eTimeoutIsError)
string x_GetConnRef(void)
virtual void OnRead(void)
The client has just sent data.
void x_SetObjectInfoReply(CJsonNode &reply, const string &name, const TNSTDBValue< CTime > &value)
void x_ProcessHello(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_CheckExistanceStatus(int status)
void x_SendAsyncMessage(const CJsonNode &message)
virtual void OnOpen(void)
Runs in response to an external event [asynchronous].
void x_CheckNonAnonymousClient(const string &op) const
void x_ProcessConfiguration(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessSetExpTime(const CJsonNode &message, const SCommonRequestArguments &common_args)
bool x_DetectMetaDBNeedOnGetObjectInfo(const CJsonNode &message, CNSTServiceProperties &props) const
void x_PrintMessageRequestStart(const CJsonNode &message)
unsigned int x_GetPeerAddress(void)
void x_ProcessWrite(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessSetAttr(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_CheckUserKey(const SUserKey &user_key)
TNSTDBValue< CTimeSpan > m_CreateTTL
virtual EIO_Event GetEventsToPollFor(const CTime **alarm_time) const
Following three methods are guaranteed to be called NOT at the same time as On*, so if you implement ...
CDirectNetStorageObject x_CreateObjectStream(const SICacheSettings &icache_settings, TNetStorageFlags flags)
void x_ProcessGetSize(const CJsonNode &message, const SCommonRequestArguments &common_args)
EIO_Status x_SendOutputBuffer(ESocketTimeoutTreat timeout_treat)
void x_ProcessAckAlert(const CJsonNode &message, const SCommonRequestArguments &common_args)
void(CNetStorageHandler::* FProcessor)(const CJsonNode &, const SCommonRequestArguments &)
CRef< CRequestContext > m_ConnContext
void x_ProcessRead(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_CreateConnContext(void)
void x_ProcessGetClientObjects(const CJsonNode &message, const SCommonRequestArguments &comm_args)
void x_ProcessGetObjectInfo(const CJsonNode &message, const SCommonRequestArguments &common_args)
virtual void OnWrite(void)
The client is ready to receive data.
void x_ProcessShutdown(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessReconfigure(const CJsonNode &message, const SCommonRequestArguments &common_args)
CNetStorageHandler(CNetStorageServer *server)
void x_ProcessGetClientsInfo(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_SetConnRequestStatus(unsigned int status)
void x_SetQuickAcknowledge(void)
void x_CreateClient(void)
CNSTServiceProperties m_WriteServiceProps
void x_PrintMessageRequestStop(void)
void x_FillObjectInfo(CJsonNode &reply, const string &val)
void x_ProcessGetUsersInfo(const CJsonNode &message, const SCommonRequestArguments &common_args)
char m_WriteBuffer[kWriteBufferSize]
virtual void OnOverflow(EOverflowReason reason)
Runs when there are insufficient resources to queue a connection, prior to closing it.
void x_ProcessGetMetadataInfo(const CJsonNode &message, const SCommonRequestArguments &common_args)
virtual void OnTimeout(void)
Runs when a client has been idle for too long, prior to closing the connection [synchronous].
void x_ProcessDelAttr(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_OnSocketWriteError(EIO_Status status, size_t bytes_written, const char *output_buffer, size_t output_buffer_size)
void x_ProcessGetAttrList(const CJsonNode &message, const SCommonRequestArguments &common_args)
CFastMutex m_OutputQueueMutex
void x_CheckExpirationStatus(int status)
EMetadataOption x_ConvertMetadataArgument(const CJsonNode &message) const
CDirectNetStorageObject m_ObjectBeingWritten
void x_ProcessRelocate(const CJsonNode &message, const SCommonRequestArguments &common_args)
virtual void OnClose(IServer_ConnectionHandler::EClosePeer peer)
The connection has closed (with information on type of closing)
CNetStorageServer * m_Server
void x_ProcessBye(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessGetAttr(const CJsonNode &message, const SCommonRequestArguments &common_args)
EIO_Status x_SendOverUTTP()
CRef< CRequestContext > m_CmdContext
CDirectNetStorageObject x_GetObject(const CJsonNode &message, bool need_fake_write=false)
bool x_DetectMetaDBNeedUpdate(const CJsonNode &message, CNSTServiceProperties &props) const
void x_ProcessInfo(const CJsonNode &message, const SCommonRequestArguments &common_args)
bool m_WriteCreateNeedMetaDBUpdate
CJsonOverUTTPWriter m_JSONWriter
Int8 x_GetUserID(const CNSTUserID &user)
void x_ProcessLockFTPath(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_CheckICacheSettings(const SICacheSettings &icache_settings)
void x_OptionalExpirationUpdate(CDirectNetStorageObject &object, CJsonNode &reply, const string &user_message)
static SProcessorMap sm_Processors[]
bool x_DetectMetaDBNeedOnCreate(TNetStorageFlags flags)
EMetadataOption m_MetadataOption
void x_ProcessGetUserObjects(const CJsonNode &message, const SCommonRequestArguments &comm_args)
char m_ReadBuffer[kReadBufferSize]
Int8 x_GetClientID(const string &client)
void x_GetStorageParams(const CJsonNode &message, SICacheSettings *icache_settings, SUserKey *user_key, TNetStorageFlags *flags)
void x_SendWriteConfirmation()
vector< CJsonNode > m_OutputQueue
void x_ProlongObjectOnFailure(EOp operation, const string &object_key, const CNSTServiceProperties &service_props)
void x_ProcessCreate(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessDelete(const CJsonNode &message, const SCommonRequestArguments &common_args)
FProcessor x_FindProcessor(const SCommonRequestArguments &common_args)
void x_CheckObjectLoc(const string &object_loc) const
CJsonOverUTTPReader m_JSONReader
void x_OnData(const void *data, size_t data_size)
void x_ValidateWriteMetaDBAccess(const CJsonNode &message, bool expect_object=true) const
void x_OnMessage(const CJsonNode &message)
void x_ProcessHealth(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_ProcessExists(const CJsonNode &message, const SCommonRequestArguments &common_args)
void x_SetCmdRequestStatus(unsigned int status)
const SCommonRequestArguments & m_CommonArgs
CNetStorageHandler & m_Handler
CRelocateCallback(CNetStorageHandler &handler, const SCommonRequestArguments &common_args, CDirectNetStorageObject &object, bool need_progress_report)
void Callback(CJsonNode info)
CDirectNetStorageObject & m_Object
bool m_NeedProgressReport
~CRequestContextResetter()
CRequestContextResetter()
Class for reading series of chunks sent by a CUTTPWriter instance as a stream of bytes.
Class that serializes series of chunks of data for sending over binary streams.
IServer_ConnectionHandler::
void(*)(CSeq_entry_Handle seh, IWorkbench *wb, const CSerialObject &obj) handler
void SetRequestStatus(int status)
unsigned TNetStorageFlags
Bitwise OR of ENetStorageFlags.
bool NotNull(void) const THROWS_NONE
Check if pointer is not null – same effect as NotEmpty().
int64_t Int8
8-byte (64-bit) signed integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
EClosePeer
Type of connection closing.
EOverflowReason
Error codes for OnOverflow method in IServer_ConnectionHandler.
EIO_Event
I/O event (or direction).
const GenericPointer< typename T::ValueType > T2 value
Defines: CTimeFormat - storage class for time format.
const size_t kWriteBufferSize
const size_t kReadBufferSize
Defines CRequestContext class for NCBI C++ diagnostic API.
Framework to create multithreaded network servers with thread-per-request scheduling.
static CNamedPipeClient * client