Falcon
Toggle main menu visibility
Loading...
Searching...
No Matches
distributor.hpp
1
// ---------------------------------------------------------------------
2
// This file is part of falcon-core.
3
//
4
// Copyright (C) 2015, 2016, 2017 Neuro-Electronics Research Flanders
5
//
6
// Falcon-server is free software: you can redistribute it and/or modify
7
// it under the terms of the GNU General Public License as published by
8
// the Free Software Foundation, either version 3 of the License, or
9
// (at your option) any later version.
10
//
11
// Falcon-server is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
15
//
16
// You should have received a copy of the GNU General Public License
17
// along with falcon-core. If not, see <http://www.gnu.org/licenses/>.
18
// ---------------------------------------------------------------------
19
20
#pragma once
21
22
#include <map>
23
#include <string>
24
#include <vector>
25
26
#include "iprocessor.hpp"
27
#include "options/options.hpp"
28
#include "recording_utilities/channellist.hpp"
29
#include "timeseriesdata/timeseriesdata.hpp"
30
31
typedef
std::map<std::string, ChannelList<unsigned int>> ChannelMap;
32
33
class
Distributor :
public
IProcessor {
34
// CONSTRUCTOR and OVERLOADED METHODS
35
public
:
36
Distributor();
37
void
CreatePorts()
override
;
38
void
CompleteStreamInfo()
override
;
39
void
Prepare(
GlobalContext
& context)
override
;
40
void
Process(
ProcessingContext
& context)
override
;
41
void
Postprocess(
ProcessingContext
& context)
override
;
42
43
// PORTS
44
protected
:
45
PortIn<TimeSeriesType<double>
>* input_port_;
46
std::map<std::string, PortOut<TimeSeriesType<double>>*> data_ports_;
47
48
// variables
49
protected
:
50
unsigned
int
incoming_batch_size_;
51
unsigned
int
max_n_channels_;
52
53
// constants
54
protected
:
55
const
unsigned
int
MAX_N_CHANNELS = 4096;
56
// maximum number of channels that the distributor can handle
57
const
int
BUFFER_SIZE = 2000;
// ring buffer size on the output ports
58
const
WaitStrategy WAIT_STRATEGY = WaitStrategy::kBlockingStrategy;
59
60
// OPTIONS
61
protected
:
62
options::Value<ChannelMap, false> channelmap_;
63
};
GlobalContext
Definition
context.hpp:54
PortIn
Definition
streamports.hpp:256
ProcessingContext
Definition
runinfo.hpp:248
extensions
falcon-fklab-extensions
processors
distributor
distributor.hpp
Generated by
1.18.0