Comments (3)
Inside your DicomService, you can always look at this.Association
from fo-dicom.
When you build up a DicomServer, then you create a class inheriting from DicomService
. This class is then passed to your DicomServer as a generic Type-Parameter.
What you should know is, that the DicomServer creates a new instance of your DicomService class for every association. If there are several associations in parallel, then the DicomServer as a collection of your DicomService instances.
That said, you can add some private fields to your class, like timestampStart
or instancesCount
.
public class MyDicomService : DicomService, IDicomServiceProvider, IDicomCStoreProvider
{
private DateTime _associationStarted;
private int _instancesCount = 0;
public Task OnReceiveAssociationRequestAsync(DicomAssociation association)
{
// we can know which client it is by use association
_associationStarted = DateTime.Now;
}
public Task OnCStoreRequestAsync(DicomCStoreRequest request)
{
// you could check the client/association connected to this instance by accessing the Association-property
var client = Association.CallingAE;
_instancesCount ++;
}
public Task OnReceiveAssociationReleaseRequestAsync()
{
// here on release you can access all fields and the Association property
Logger.Log($"client {Association.CallingAE} sent {_instancesCount} instances and took {(DateTime.Now - _associationStarted).TotalSeconds} seconds");
return SendAssociationReleaseResponseAsync();
}
}
from fo-dicom.
When you build up a DicomServer, then you create a class inheriting from
DicomService
. This class is then passed to your DicomServer as a generic Type-Parameter. What you should know is, that the DicomServer creates a new instance of your DicomService class for every association. If there are several associations in parallel, then the DicomServer as a collection of your DicomService instances. That said, you can add some private fields to your class, liketimestampStart
orinstancesCount
.public class MyDicomService : DicomService, IDicomServiceProvider, IDicomCStoreProvider { private DateTime _associationStarted; private int _instancesCount = 0; public Task OnReceiveAssociationRequestAsync(DicomAssociation association) { // we can know which client it is by use association _associationStarted = DateTime.Now; } public Task OnCStoreRequestAsync(DicomCStoreRequest request) { // you could check the client/association connected to this instance by accessing the Association-property var client = Association.CallingAE; _instancesCount ++; } public Task OnReceiveAssociationReleaseRequestAsync() { // here on release you can access all fields and the Association property Logger.Log($"client {Association.CallingAE} sent {_instancesCount} instances and took {(DateTime.Now - _associationStarted).TotalSeconds} seconds"); return SendAssociationReleaseResponseAsync(); } }
Thank you very much for your detailed reply, it helped me a lot
from fo-dicom.
Related Issues (20)
- Add Support to set dicom client ip HOT 2
- Set Time Out duration for requested association for C-Echo / C-Store HOT 4
- Question - How to Load PixelData as Fragments HOT 1
- ImageSharp is not free software - Disclaimer? HOT 5
- DICOM files where numeric tags contain "NaN" (don't ask) cause exceptions
- Race condition in GenericGrayscalePipeline
- Corrupt Multi-frame File - Consistent for all image sizes. HOT 2
- Code in fo-dicom to apply window width and center on an image HOT 1
- TCP listener stuck while processing TLS handshake HOT 4
- HTJ2K Throwing exception HOT 2
- The SCU client transmits images to the fo-dicom c-store-scp, and the speed decreases sequentially after each task is transmitted
- Korean Hangul characters incorrectly read from dicom file HOT 2
- fo-dicom v5 Dependency Injection Documentation HOT 3
- DicomServer performance regression HOT 6
- Microsoft Code Analysis HOT 2
- Creating a TCP connection using `DicomClient.SendAsync()` does not take `AssociationRequestTimeoutInMs` into account HOT 4
- DicomValidation for VR PN HOT 17
- dataset AddOrUpdate not find Encod args HOT 4
- Support proper encoding of strings with multi-valued encodings HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fo-dicom.