00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <string.h>
00004 #include <dlfcn.h>
00005 #include "StreamSpec.h"
00006 #include "FilterData/Policies.h"
00007
00008
00009
00010
00011
00012 static int nextTag = 4;
00013
00014
00015
00016 StreamSpec *createEmptyStreamSpec() {
00017 StreamSpec *s = (StreamSpec *) malloc(sizeof(StreamSpec));
00018 s->tag = nextTag++;
00019 return s;
00020 }
00021
00022 void destroyStreamSpec(StreamSpec *s){
00023
00024 free(s);
00025 }
00026
00027
00028
00029
00030 int setFrom(StreamSpec *s, FilterSpec *filter, char *portName, char *writePolicyName, char *polibName
00031 #ifdef VOID_TERM
00032 , int breakLoop
00033 #endif
00034 ){
00035 writePolicy_t p;
00036
00037 s->fromFilter = filter;
00038 strncpy(s->fromPortName, portName, MAX_PTNAME_LENGTH);
00039 strncpy(s->writePolicyName, writePolicyName, MAX_PLNAME_LENGTH);
00040 s->fromFilter->outputs[s->fromFilter->numOutputs++] = s;
00041
00042
00043 p = getWritePolicyByName(writePolicyName);
00044 if ((p == LABELED_STREAM) || (p == MULTICAST_LABELED_STREAM)){
00045
00046 if ((polibName == NULL) || (strlen(polibName) == 0))
00047 return 0;
00048 else
00049 strncpy(s->lsLibName, polibName, MAX_PLNAME_LENGTH);
00050 }
00051 else if (p == W_POLICY_ERROR){
00052 return 0;
00053 }
00054 #ifdef VOID_TERM
00055 s->breakLoop = breakLoop;
00056 #endif
00057 return 1;
00058 }
00059
00060 int setTo(StreamSpec *s, FilterSpec *filter, char *portName, char *readPolicyName){
00061
00062
00063 s->toFilter = filter;
00064 s->toFilter->inputs[s->toFilter->numInputs++] = s;
00065 strncpy(s->toPortName, portName, MAX_PTNAME_LENGTH);
00066 return 1;
00067 }
00068