|
Katana Plug-in APIs 0.1
|
00001 // Copyright (c) 2016 The Foundry Visionmongers Ltd. 00002 #ifndef FNRENDER_SOCKETIDSENDER_H_ 00003 #define FNRENDER_SOCKETIDSENDER_H_ 00004 #include <stdint.h> 00005 #include <string> 00006 #include <stdexcept> 00007 00008 #include "FnPlatform/internal/Portability.h" 00009 #include "FnRender/FnRenderAPI.h" 00010 #include "FnRender/plugin/IdSenderInterface.h" 00011 #include "FnRender/suite/FnRenderServicesSuite.h" 00012 00013 namespace Foundry 00014 { 00015 namespace Katana 00016 { 00017 namespace Render 00018 { 00019 class FNRENDER_API SocketIdSender : public IdSenderInterface 00020 { 00021 public: 00022 SocketIdSender(const std::string& host, int64_t frameID); 00023 virtual ~SocketIdSender(); 00024 00025 FNKAT_DEPRECATED void getIds(int64_t* nextId, int64_t* maxId); 00026 void send(uint64_t id, const char* const objectName); 00027 00028 class FNRENDER_API SocketIdSenderException : public std::runtime_error 00029 { 00030 public: 00031 explicit SocketIdSenderException(const char* message) 00032 : std::runtime_error(message) 00033 { 00034 } 00035 }; 00036 00037 private: 00038 const FnRenderServicesSuite_v1* getSuite(); 00039 00040 FnSocketIdSenderHandle _handle; 00041 std::string _host; 00042 int64_t _frameID; 00043 int _socketId; 00044 00045 void connect_if_first_time(); 00046 00047 SocketIdSender(const SocketIdSender&); 00048 SocketIdSender& operator=(const SocketIdSender&); 00049 }; 00050 } // namespace Render 00051 } // namespace Katana 00052 } // namespace Foundry 00053 #endif // FNRENDER_SOCKETIDSENDER_H_
1.7.3