Skip to content

Commit

Permalink
Grpc support for ReleaseLicense private API (#1061)
Browse files Browse the repository at this point in the history
  • Loading branch information
ChiragKavdia authored May 28, 2024
1 parent 80d2008 commit 105ff3c
Show file tree
Hide file tree
Showing 10 changed files with 84 additions and 0 deletions.
10 changes: 10 additions & 0 deletions generated/nirfmxinstr_restricted/nirfmxinstr_restricted.proto
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ service NiRFmxInstrRestricted {
rpc DefineSParameterExternalAttenuationTable(DefineSParameterExternalAttenuationTableRequest) returns (DefineSParameterExternalAttenuationTableResponse);
rpc SaveExternalAttenuationTable(SaveExternalAttenuationTableRequest) returns (SaveExternalAttenuationTableResponse);
rpc CfgExternalAttenuationTableFrequencies(CfgExternalAttenuationTableFrequenciesRequest) returns (CfgExternalAttenuationTableFrequenciesResponse);
rpc ReleaseLicense(ReleaseLicenseRequest) returns (ReleaseLicenseResponse);
}

message ConvertForPowerUnitsUtilityRequest {
Expand Down Expand Up @@ -524,3 +525,12 @@ message CfgExternalAttenuationTableFrequenciesResponse {
int32 status = 1;
}

message ReleaseLicenseRequest {
nidevice_grpc.Session instrument = 1;
string selector_string = 2;
}

message ReleaseLicenseResponse {
int32 status = 1;
}

18 changes: 18 additions & 0 deletions generated/nirfmxinstr_restricted/nirfmxinstr_restricted_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -818,5 +818,23 @@ cfg_external_attenuation_table_frequencies(const StubPtr& stub, const nidevice_g
return response;
}

ReleaseLicenseResponse
release_license(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string)
{
::grpc::ClientContext context;

auto request = ReleaseLicenseRequest{};
request.mutable_instrument()->CopyFrom(instrument);
request.set_selector_string(selector_string);

auto response = ReleaseLicenseResponse{};

raise_if_error(
stub->ReleaseLicense(&context, request, &response),
context);

return response;
}


} // namespace nirfmxinstr_restricted_grpc::experimental::client
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ CfgSParameterExternalAttenuationTableSParameterResponse cfg_s_parameter_external
DefineSParameterExternalAttenuationTableResponse define_s_parameter_external_attenuation_table(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::string& table_name, const pb::int32& number_of_frequency_points, const pb::int32& number_of_ports);
SaveExternalAttenuationTableResponse save_external_attenuation_table(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::string& table_name, const std::string& file_path, const std::string& description);
CfgExternalAttenuationTableFrequenciesResponse cfg_external_attenuation_table_frequencies(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::string& table_name, const std::vector<double>& frequency);
ReleaseLicenseResponse release_license(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string);

} // namespace nirfmxinstr_restricted_grpc::experimental::client

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ NiRFmxInstrRestrictedLibrary::NiRFmxInstrRestrictedLibrary(std::shared_ptr<nidev
function_pointers_.DefineSParameterExternalAttenuationTable = reinterpret_cast<DefineSParameterExternalAttenuationTablePtr>(shared_library_->get_function_pointer("RFmxInstr_DefineSParameterExternalAttenuationTable"));
function_pointers_.SaveExternalAttenuationTable = reinterpret_cast<SaveExternalAttenuationTablePtr>(shared_library_->get_function_pointer("RFmxInstr_SaveExternalAttenuationTable"));
function_pointers_.CfgExternalAttenuationTableFrequencies = reinterpret_cast<CfgExternalAttenuationTableFrequenciesPtr>(shared_library_->get_function_pointer("RFmxInstr_CfgExternalAttenuationTableFrequencies"));
function_pointers_.ReleaseLicense = reinterpret_cast<ReleaseLicensePtr>(shared_library_->get_function_pointer("RFmxInstr_ReleaseLicense"));
}

NiRFmxInstrRestrictedLibrary::~NiRFmxInstrRestrictedLibrary()
Expand Down Expand Up @@ -454,4 +455,12 @@ int32 NiRFmxInstrRestrictedLibrary::CfgExternalAttenuationTableFrequencies(niRFm
return function_pointers_.CfgExternalAttenuationTableFrequencies(instrumentHandle, selectorString, tableName, frequency, arraySize);
}

int32 NiRFmxInstrRestrictedLibrary::ReleaseLicense(niRFmxInstrHandle instrumentHandle, char selectorString[])
{
if (!function_pointers_.ReleaseLicense) {
throw nidevice_grpc::LibraryLoadException("Could not find RFmxInstr_ReleaseLicense.");
}
return function_pointers_.ReleaseLicense(instrumentHandle, selectorString);
}

} // namespace nirfmxinstr_restricted_grpc
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class NiRFmxInstrRestrictedLibrary : public nirfmxinstr_restricted_grpc::NiRFmxI
int32 DefineSParameterExternalAttenuationTable(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], int32 numberOfFrequencyPoints, int32 numberOfPorts) override;
int32 SaveExternalAttenuationTable(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], char filePath[], char description[]) override;
int32 CfgExternalAttenuationTableFrequencies(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], float64 frequency[], int32 arraySize) override;
int32 ReleaseLicense(niRFmxInstrHandle instrumentHandle, char selectorString[]) override;

private:
using ConvertForPowerUnitsUtilityPtr = int32 (*)(niRFmxInstrHandle instrumentHandle, float64 referenceOrTriggerLevelIn, int32 inputPowerUnits, int32 outputPowerUnits, int32 terminalConfiguration, float64 bandwidth, float64* referenceOrTriggerLevelOut);
Expand Down Expand Up @@ -115,6 +116,7 @@ class NiRFmxInstrRestrictedLibrary : public nirfmxinstr_restricted_grpc::NiRFmxI
using DefineSParameterExternalAttenuationTablePtr = int32 (*)(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], int32 numberOfFrequencyPoints, int32 numberOfPorts);
using SaveExternalAttenuationTablePtr = int32 (*)(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], char filePath[], char description[]);
using CfgExternalAttenuationTableFrequenciesPtr = int32 (*)(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], float64 frequency[], int32 arraySize);
using ReleaseLicensePtr = int32 (*)(niRFmxInstrHandle instrumentHandle, char selectorString[]);

typedef struct FunctionPointers {
ConvertForPowerUnitsUtilityPtr ConvertForPowerUnitsUtility;
Expand Down Expand Up @@ -163,6 +165,7 @@ class NiRFmxInstrRestrictedLibrary : public nirfmxinstr_restricted_grpc::NiRFmxI
DefineSParameterExternalAttenuationTablePtr DefineSParameterExternalAttenuationTable;
SaveExternalAttenuationTablePtr SaveExternalAttenuationTable;
CfgExternalAttenuationTableFrequenciesPtr CfgExternalAttenuationTableFrequencies;
ReleaseLicensePtr ReleaseLicense;
} FunctionLoadStatus;

std::shared_ptr<nidevice_grpc::SharedLibraryInterface> shared_library_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class NiRFmxInstrRestrictedLibraryInterface {
virtual int32 DefineSParameterExternalAttenuationTable(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], int32 numberOfFrequencyPoints, int32 numberOfPorts) = 0;
virtual int32 SaveExternalAttenuationTable(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], char filePath[], char description[]) = 0;
virtual int32 CfgExternalAttenuationTableFrequencies(niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], float64 frequency[], int32 arraySize) = 0;
virtual int32 ReleaseLicense(niRFmxInstrHandle instrumentHandle, char selectorString[]) = 0;
};

} // namespace nirfmxinstr_restricted_grpc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class NiRFmxInstrRestrictedMockLibrary : public nirfmxinstr_restricted_grpc::NiR
MOCK_METHOD(int32, DefineSParameterExternalAttenuationTable, (niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], int32 numberOfFrequencyPoints, int32 numberOfPorts), (override));
MOCK_METHOD(int32, SaveExternalAttenuationTable, (niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], char filePath[], char description[]), (override));
MOCK_METHOD(int32, CfgExternalAttenuationTableFrequencies, (niRFmxInstrHandle instrumentHandle, char selectorString[], char tableName[], float64 frequency[], int32 arraySize), (override));
MOCK_METHOD(int32, ReleaseLicense, (niRFmxInstrHandle instrumentHandle, char selectorString[]), (override));
};

} // namespace unit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1315,6 +1315,30 @@ namespace nirfmxinstr_restricted_grpc {
}
}

//---------------------------------------------------------------------
//---------------------------------------------------------------------
::grpc::Status NiRFmxInstrRestrictedService::ReleaseLicense(::grpc::ServerContext* context, const ReleaseLicenseRequest* request, ReleaseLicenseResponse* response)
{
if (context->IsCancelled()) {
return ::grpc::Status::CANCELLED;
}
try {
auto instrument_grpc_session = request->instrument();
niRFmxInstrHandle instrument = session_repository_->access_session(instrument_grpc_session.name());
auto selector_string_mbcs = convert_from_grpc<std::string>(request->selector_string());
char* selector_string = (char*)selector_string_mbcs.c_str();
auto status = library_->ReleaseLicense(instrument, selector_string);
if (!status_ok(status)) {
return ConvertApiErrorStatusForNiRFmxInstrHandle(context, status, instrument);
}
response->set_status(status);
return ::grpc::Status::OK;
}
catch (nidevice_grpc::NonDriverException& ex) {
return ex.GetStatus();
}
}


NiRFmxInstrRestrictedFeatureToggles::NiRFmxInstrRestrictedFeatureToggles(
const nidevice_grpc::FeatureToggles& feature_toggles)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class NiRFmxInstrRestrictedService final : public NiRFmxInstrRestricted::Service
::grpc::Status DefineSParameterExternalAttenuationTable(::grpc::ServerContext* context, const DefineSParameterExternalAttenuationTableRequest* request, DefineSParameterExternalAttenuationTableResponse* response) override;
::grpc::Status SaveExternalAttenuationTable(::grpc::ServerContext* context, const SaveExternalAttenuationTableRequest* request, SaveExternalAttenuationTableResponse* response) override;
::grpc::Status CfgExternalAttenuationTableFrequencies(::grpc::ServerContext* context, const CfgExternalAttenuationTableFrequenciesRequest* request, CfgExternalAttenuationTableFrequenciesResponse* response) override;
::grpc::Status ReleaseLicense(::grpc::ServerContext* context, const ReleaseLicenseRequest* request, ReleaseLicenseResponse* response) override;
private:
LibrarySharedPtr library_;
ResourceRepositorySharedPtr session_repository_;
Expand Down
16 changes: 16 additions & 0 deletions source/codegen/metadata/nirfmxinstr_restricted/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1457,5 +1457,21 @@
}
],
'returns': 'int32'
},
'ReleaseLicense': {
'parameters': [
{
'direction': 'in',
'grpc_name': 'instrument',
'name': 'instrumentHandle',
'type': 'niRFmxInstrHandle'
},
{
'direction': 'in',
'name': 'selectorString',
'type': 'char[]'
}
],
'returns': 'int32'
}
}

0 comments on commit 105ff3c

Please sign in to comment.