Katana Plug-in APIs 0.1

SocketIdSender.h

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_
 All Classes Functions Variables Typedefs Enumerations Enumerator